(57)【要約】  スペクトル拡散シーケンスのインフライト逆拡散を提供するために、実行ユニットとベクトルデータメモリとの間のデータフローパスにおいて逆拡散回路を利用するベクトル処理エンジン（ＶＰＥ）。関連するベクトル処理の命令、システム、および方法も開示される。逆拡散回路は、ＶＰＥ内の実行ユニットとベクトルデータメモリとの間のデータフローパス内に設けられる。逆拡散回路は、出力ベクトルデータサンプルセットが実行ユニットからベクトルデータメモリに出力データフローパスを介して供給されている間に、インフライトの実行ユニットからの出力ベクトルデータサンプルセットを使用して、スペクトル拡散シーケンスを逆拡散するように構成される。出力ベクトルデータサンプルセットのインフライト逆拡散は、実行ユニットによって供給された出力ベクトルデータサンプルセットが、ベクトルデータメモリに記憶される前に逆拡散されることを意味し、その結果、出力ベクトルデータサンプルセットは逆拡散されたフォーマットでベクトルデータメモリに記憶される。【選択図】図２７
2016537725.tif 000002
【特許請求の範囲】
【請求項１】
ベクトル処理動作を実行する少なくとも１つの実行ユニットによって生成された、結果として生じる出力ベクトルデータサンプルセットをインフライト逆拡散するように構成された、ベクトル処理エンジン（ＶＰＥ）であって、
ベクトル処理動作のための少なくとも１つの入力データフローパス内にフェッチされた入力ベクトルデータサンプルセットを供給することと、
記憶されるべき少なくとも１つの出力データフローパスからの少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを受信することと
を行うように構成された、少なくとも１つのベクトルデータファイルと、
前記少なくとも１つの入力データフローパス上で前記入力ベクトルデータサンプルセットを受信することと、
レジスタファイルからコードシーケンスベクトルデータサンプルセットを受信することと、
前記少なくとも１つの入力データフローパス上に、結果として生じる出力ベクトルデータサンプルセットを供給するために、前記入力ベクトルデータサンプルセットを前記コードシーケンスベクトルデータサンプルセットと乗算することと
を行うように構成された、前記少なくとも１つの入力データフローパス内に設けられた少なくとも１つの実行ユニットと、
前記結果として生じる出力ベクトルデータサンプルセットを受信することと、
前記結果として生じる出力ベクトルデータサンプルセットが前記少なくとも１つのベクトルデータファイルに記憶されることなく、少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給するために、前記結果として生じる出力ベクトルデータサンプルセットを逆拡散することと、
前記少なくとも１つの出力データフローパス上に前記少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給することと
を行うように構成された、少なくとも１つの逆拡散回路と
を備える、ＶＰＥ。
【請求項２】
前記少なくとも１つのベクトルデータファイルは、
前記ベクトル処理動作のための前記少なくとも１つの入力データフローパス内に前記少なくとも１つのベクトルデータファイルの幅の前記入力ベクトルデータサンプルセットを供給することと、
記憶されるべき前記少なくとも１つの出力データフローパスからの前記少なくとも１つのベクトルデータファイルの前記幅の前記少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを受信することと
を行うように構成される、請求項１に記載のＶＰＥ。
【請求項３】
前記少なくとも１つのベクトルデータファイルは、
前記少なくとも１つの入力データフローパス内の少なくとも１つのベクトルデータファイル出力上に前記入力ベクトルデータサンプルセットを供給することと、
前記少なくとも１つの出力データフローパス内の少なくとも１つのベクトルデータファイル入力上で前記少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを受信することと
を行うようにさらに構成され、
前記少なくとも１つの実行ユニットは、
前記少なくとも１つの入力データフローパス内の少なくとも１つの実行ユニット入力上で前記入力ベクトルデータサンプルセットを受信することと、
前記少なくとも１つの入力データフローパス内の少なくとも１つの実行ユニット出力上に前記結果として生じる出力ベクトルデータサンプルセットを供給するために、前記入力ベクトルデータサンプルセットを前記コードシーケンスベクトルデータサンプルセットと乗算することと
を行うように構成され、
前記少なくとも１つの逆拡散回路は、
前記少なくとも１つの実行ユニットから、前記少なくとも１つの入力データフローパス内の少なくとも１つの逆拡散回路入力上で前記結果として生じる出力ベクトルデータサンプルセットを受信することと、
前記少なくとも１つの出力データフローパス内の少なくとも１つの逆拡散回路出力上に前記逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給することと
を行うようにさらに構成される、
請求項１に記載のＶＰＥ。
【請求項４】
前記逆拡散回路は、前記少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給するために、前記結果として生じる出力ベクトルデータサンプルセット内のサンプルを逆拡散するように構成された少なくとも１つの加算器から構成される、
請求項１に記載のＶＰＥ。
【請求項５】
前記少なくとも１つの加算器は、加算器ツリー内に設けられた複数の加算器から構成され、前記複数の加算器の各々が、各々が異なるビット幅を有する複数の逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給するように構成される、
請求項４に記載のＶＰＥ。
【請求項６】
前記逆拡散回路は、前記複数の１つの、結果として生じる出力ベクトルデータサンプルセットのうちの１つを選択するように構成された逆拡散選択器をさらに備える、
請求項５に記載のＶＰＥ。
【請求項７】
前記コードシーケンスベクトルデータサンプルセットは、少なくとも１つのＣＤＭＡチップコードシーケンスから構成される、
請求項１に記載のＶＰＥ。
【請求項８】
前記少なくとも１つの逆拡散回路は、前記結果として生じる出力ベクトルデータサンプルセットを選択的に逆拡散するために、プログラム可能な逆拡散データ経路構成入力に基づいて再構成されるように構成可能である、
請求項１に記載のＶＰＥ。
【請求項９】
前記少なくとも１つの逆拡散回路は、前記少なくとも１つの実行ユニットによって実行されるべき前記ＶＰＥのクロックサイクルごとに、前記結果として生じる出力ベクトルデータサンプルセットを選択的に逆拡散するために、前記プログラム可能な逆拡散データ経路構成入力に基づいて再構成されるようにさらに構成される、
請求項８に記載のＶＰＥ。
【請求項１０】
前記少なくとも１つの逆拡散回路は、前記少なくとも１つの実行ユニットによって実行されるべき次のベクトル命令上で、前記結果として生じる出力ベクトルデータサンプルセットを選択的に逆拡散するために、前記プログラム可能な逆拡散データ経路構成入力に基づいて再構成されるようにさらに構成される、
請求項８に記載のＶＰＥ。
【請求項１１】
前記少なくとも１つの実行ユニットは、前記少なくとも１つの実行ユニットのためのプログラム可能な入力データフローパス構成に基づいて、前記入力ベクトルデータサンプルセットからの入力ベクトルデータサンプルの様々なビット幅を処理するように構成可能である、
請求項１に記載のＶＰＥ。
【請求項１２】
前記少なくとも１つの逆拡散回路は、複数のラッチをさらに備え、前記少なくとも１つの逆拡散回路は、前記複数のラッチに前記少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを記憶するようにさらに構成される、
請求項１に記載のＶＰＥ。
【請求項１３】
前記少なくとも１つの逆拡散回路は、前記複数のラッチの中の選択されたラッチに前記少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを記憶するようにさらに構成される、
請求項１２に記載のＶＰＥ。
【請求項１４】
前記少なくとも１つの逆拡散回路は、前記複数のラッチに対応する複数の選択器をさらに備え、前記少なくとも１つの逆拡散回路が、前記複数のラッチの中の選択されたラッチに前記少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを記憶するために、前記複数の選択器の中の選択器を制御するように構成される、
請求項１２に記載のＶＰＥ。
【請求項１５】
前記少なくとも１つの逆拡散回路は、前記少なくとも１つのベクトルデータファイルに記憶されるために、前記少なくとも１つの出力データフローパス内に前記少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給する前に、前記複数のラッチに前記少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを記憶するようにさらに構成される、
請求項１２に記載のＶＰＥ。
【請求項１６】
ベクトル処理動作を実行する少なくとも１つの実行ユニットによって生成された、結果として生じる出力ベクトルデータサンプルセットをインフライト逆拡散するように構成された、ベクトル処理エンジン（ＶＰＥ）であって、
ベクトル処理動作のための少なくとも１つの入力データフローパス手段内にフェッチされた入力ベクトルデータサンプルセットを供給するための手段と、
記憶されるべき少なくとも１つの出力データフローパス手段からの少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを受信するための手段と
を備える、少なくとも１つのベクトルデータファイル手段と、
前記少なくとも１つの入力データフローパス手段上で前記入力ベクトルデータサンプルセットを受信するための手段と、
レジスタファイルからコードシーケンスベクトルデータサンプルセットを受信するための手段と、
前記少なくとも１つの入力データフローパス手段上に、結果として生じる出力ベクトルデータサンプルセットを供給するために、前記入力ベクトルデータサンプルセットを前記コードシーケンスベクトルデータサンプルセットと乗算するための乗算手段と
を備える、前記少なくとも１つの入力データフローパス手段内に設けられた少なくとも１つの実行ユニット手段と、
前記少なくとも１つの入力データフローパス手段上で前記結果として生じる出力ベクトルデータサンプルセットを受信するための手段と、
前記結果として生じる出力ベクトルデータサンプルセットが前記少なくとも１つのベクトルデータファイル手段に記憶されることなく、少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給するために、前記結果として生じる出力ベクトルデータサンプルセットを前記コードシーケンスベクトルデータサンプルセットと逆拡散するための逆拡散手段と、
前記少なくとも１つの出力データフローパス手段上に前記少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給するための手段と
を備える、少なくとも１つの逆拡散回路手段と
を備える、ベクトル処理エンジン（ＶＰＥ）。
【請求項１７】
ベクトル処理動作を実行する少なくとも１つの実行ユニットによって生成された、結果として生じる出力ベクトルデータサンプルセットをインフライト逆拡散する方法であって、
少なくとも１つのベクトルデータファイルからベクトル処理動作のための少なくとも１つの入力データフローパス内にフェッチされた入力ベクトルデータサンプルセットを供給することと、
前記少なくとも１つの入力データフローパス内に設けられた少なくとも１つの実行ユニット内の前記少なくとも１つの入力データフローパス上で前記入力ベクトルデータサンプルセットを受信することと、
レジスタファイルからコードシーケンスベクトルデータサンプルセットを受信することと、
前記少なくとも１つの入力データフローパス上に、結果として生じる出力ベクトルデータサンプルセットを供給するために、前記入力ベクトルデータサンプルセットを前記コードシーケンスベクトルデータサンプルセットと乗算することと、
前記結果として生じる出力ベクトルデータサンプルセットが前記少なくとも１つのベクトルデータファイルに記憶されることなく、少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給するために、前記結果として生じる出力ベクトルデータサンプルセットを逆拡散することと、
前記少なくとも１つのベクトルデータファイルに前記少なくとも１つの出力データフローパスからの前記少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを記憶することと
を備える、方法。
【請求項１８】
前記結果として生じる出力ベクトルデータサンプルセットを逆拡散することは、前記少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給するために、少なくとも１つの加算器内で前記結果として生じる出力ベクトルデータサンプルセット内の逆拡散サンプルを加算することをさらに備える、
請求項１７に記載の方法。
【請求項１９】
前記少なくとも１つの加算器は、加算器ツリー内に設けられた複数の加算器から構成され、前記複数の加算器の各々が、各々が異なるビット幅を有する複数の逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給するように構成される、
請求項１８に記載の方法。
【請求項２０】
前記少なくとも１つの出力データフローパス内に前記少なくとも１つの結果として生じる出力ベクトルデータサンプルセットとして供給するために、前記複数の逆拡散された、結果として生じる出力ベクトルデータサンプルセットのうちの１つを選択することをさらに備える、
請求項１９に記載の方法。
【請求項２１】
プログラム可能な逆拡散データ経路構成入力を受信することと、
前記プログラム可能な逆拡散データ経路構成入力に基づいて、前記結果として生じる出力ベクトルデータサンプルセットを選択的に逆拡散することと
をさらに備える、請求項１７に記載の方法。
【請求項２２】
前記少なくとも１つの実行ユニットによって実行されるべきＶＰＥのクロックサイクルごとに、前記プログラム可能な逆拡散データ経路構成入力に基づいて、前記結果として生じる出力ベクトルデータサンプルセットを選択的に逆拡散することをさらに備える、
請求項２１に記載の方法。
【請求項２３】
前記少なくとも１つの実行ユニットによって実行されるべき次のベクトル命令上で受信された前記プログラム可能な逆拡散データ経路構成入力に基づいて、前記結果として生じる出力ベクトルデータサンプルセットを選択的に逆拡散することをさらに備える、
請求項２１に記載の方法。
【発明の詳細な説明】
【関連出願】
【０００１】
[0001]本出願は、２０１３年３月１３日に出願され、参照によりその全体が本明細書に組み込まれている、「ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＩＮＧ  ＥＮＧＩＮＥＳ  ＨＡＶＩＮＧ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＤＡＴＡ  ＰＡＴＨ  ＣＯＮＦＩＧＵＲＡＴＩＯＮＳ  ＦＯＲ  ＰＲＯＶＩＤＩＮＧ  ＭＵＬＴＩ−ＭＯＤＥ  ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＩＮＧ，  ＡＮＤ  ＲＥＬＡＴＥＤ  ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＯＲＳ，  ＳＹＳＴＥＭＳ，  ＡＮＤ  ＭＥＴＨＯＤＳ」、１２３２４９と題する、米国特許出願第１３／７９８，６４１号に関連する。
【０００２】
[0002]本出願は、２０１３年３月１３日に出願され、参照によりその全体が本明細書に組み込まれている、「ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＩＮＧ  ＣＡＲＲＹ−ＳＡＶＥ  ＡＣＣＵＭＵＬＡＴＯＲＳ  ＥＭＰＬＯＹＩＮＧ  ＲＥＤＵＮＤＡＮＴ  ＣＡＲＲＹ−ＳＡＶＥ  ＦＯＲＭＡＴ  ＴＯ  ＲＥＤＵＣＥ  ＣＡＲＲＹ  ＰＲＯＰＡＧＡＴＩＯＮ，  ＡＮＤ  ＲＥＬＡＴＥＤ  ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＯＲＳ，  ＳＹＳＴＥＭＳ，  ＡＮＤ  ＭＥＴＨＯＤＳ」、１２３２４８と題する、米国特許出願第１３／７９８，６１８号に関連する。
【０００３】
[0003]本出願は、２０１３年１１月１５日に出願され、参照によりその全体が本明細書に組み込まれている、「ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＩＮＧ  ＥＮＧＩＮＥＳ  （ＶＰＥｓ）  ＥＭＰＬＯＹＩＮＧ  Ａ  ＴＡＰＰＥＤ−ＤＥＬＡＹ  ＬＩＮＥ（Ｓ）  ＦＯＲ  ＰＲＯＶＩＤＩＮＧ  ＰＲＥＣＩＳＩＯＮ  ＦＩＬＴＥＲ  ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＩＮＧ  ＯＰＥＲＡＴＩＯＮＳ  ＷＩＴＨ  ＲＥＤＵＣＥＤ  ＳＡＭＰＬＥ  ＲＥ−ＦＥＴＣＨＩＮＧ  ＡＮＤ  ＰＯＷＥＲ  ＣＯＮＳＵＭＰＴＩＯＮ，  ＡＮＤ  ＲＥＬＡＴＥＤ  ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＯＲ  ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ」、１２４３６２と題する、米国特許出願第１４／０８２，０７５号にも関連する。
【０００４】
[0004]本出願は、２０１３年１１月１５日に出願され、参照によりその全体が本明細書に組み込まれている、「ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＩＮＧ  ＥＮＧＩＮＥＳ  （ＶＰＥｓ）  ＥＭＰＬＯＹＩＮＧ  ＴＡＰＰＥＤ−ＤＥＬＡＹ  ＬＩＮＥ（Ｓ）  ＦＯＲ  ＰＲＯＶＩＤＩＮＧ  ＰＲＥＣＩＳＩＯＮ  ＣＯＲＲＥＬＡＴＩＯＮ／ＣＯＶＡＲＩＡＮＣＥ  ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＩＮＧ  ＯＰＥＲＡＴＩＯＮＳ  ＷＩＴＨ  ＲＥＤＵＣＥＤ  ＳＡＭＰＬＥ  ＲＥ−ＦＥＴＣＨＩＮＧ  ＡＮＤ  ＰＯＷＥＲ  ＣＯＮＳＵＭＰＴＩＯＮ，  ＡＮＤ  ＲＥＬＡＴＥＤ  ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＯＲ  ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ」、１２４３６４と題する、米国特許出願第１４／０８２，０７９号にも関連する。
【０００５】
[0005]本出願は、２０１３年１１月１５日に出願され、参照によりその全体が本明細書に組み込まれている、「ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＩＮＧ  ＥＮＧＩＮＥＳ  （ＶＰＥｓ）  ＥＭＰＬＯＹＩＮＧ  ＦＯＲＭＡＴ  ＣＯＮＶＥＲＳＩＯＮ  ＣＩＲＣＵＩＴＲＹ  ＩＮ  ＤＡＴＡ  ＦＬＯＷ  ＰＡＴＨＳ  ＢＥＴＷＥＥＮ  ＶＥＣＴＯＲ  ＤＡＴＡ  ＭＥＭＯＲＹ  ＡＮＤ  ＥＸＥＣＵＴＩＯＮ  ＵＮＩＴＳ  ＴＯ  ＰＲＯＶＩＤＥ  ＩＮ−ＦＬＩＧＨＴ  ＦＯＲＭＡＴ−ＣＯＮＶＥＲＴＩＮＧ  ＯＦ  ＩＮＰＵＴ  ＶＥＣＴＯＲ  ＤＡＴＡ  ＴＯ  ＥＸＥＣＵＴＩＯＮ  ＵＮＩＴＳ  ＦＯＲ  ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＩＮＧ  ＯＰＥＲＡＴＩＯＮＳ，  ＡＮＤ  ＲＥＬＡＴＥＤ  ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＯＲ  ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ」、１２４３６５と題する、米国特許出願第１４／０８２，０８８号にも関連する。
【０００６】
[0006]本出願は、２０１３年１１月１５日に出願され、参照によりその全体が本明細書に組み込まれている、「ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＩＮＧ  ＥＮＧＩＮＥＳ  （ＶＰＥｓ）  ＥＭＰＬＯＹＩＮＧ  ＲＥＯＲＤＥＲＩＮＧ  ＣＩＲＣＵＩＴＲＹ  ＩＮ  ＤＡＴＡ  ＦＬＯＷ  ＰＡＴＨＳ  ＢＥＴＷＥＥＮ  ＥＸＥＣＵＴＩＯＮ  ＵＮＩＴＳ  ＡＮＤ  ＶＥＣＴＯＲ  ＤＡＴＡ  ＭＥＭＯＲＹ  ＴＯ  ＰＲＯＶＩＤＥ  ＩＮ−ＦＬＩＧＨＴ  ＲＥＯＲＤＥＲＩＮＧ  ＯＦ  ＯＵＴＰＵＴ  ＶＥＣＴＯＲ  ＤＡＴＡ  ＳＴＯＲＥＤ  ＴＯ  ＶＥＣＴＯＲ  ＤＡＴＡ  ＭＥＭＯＲＹ，  ＡＮＤ  ＲＥＬＡＴＥＤ  ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＯＲ  ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ」、１２４４５０と題する、米国特許出願第１４／０８２，０８１号にも関連する。
【０００７】
[0007]本出願は、２０１３年１１月１３日に出願され、参照によりその全体が本明細書に組み込まれている、「ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＩＮＧ  ＥＮＧＩＮＥＳ  （ＶＰＥｓ）  ＥＭＰＬＯＹＩＮＧ  ＭＥＲＧＩＮＧ  ＣＩＲＣＵＩＴＲＹ  ＩＮ  ＤＡＴＡ  ＦＬＯＷ  ＰＡＴＨＳ  ＢＥＴＷＥＥＮ  ＥＸＥＣＵＴＩＯＮ  ＵＮＩＴＳ  ＡＮＤ  ＶＥＣＴＯＲ  ＤＡＴＡ  ＭＥＭＯＲＹ  ＴＯ  ＰＲＯＶＩＤＥ  ＩＮ−ＦＬＩＧＨＴ  ＭＥＲＧＩＮＧ  ＯＦ  ＯＵＴＰＵＴ  ＶＥＣＴＯＲ  ＤＡＴＡ  ＳＴＯＲＥＤ  ＴＯ  ＶＥＣＴＯＲ  ＤＡＴＡ  ＭＥＭＯＲＹ，  ＡＮＤ  ＲＥＬＡＴＥＤ  ＶＥＣＴＯＲ  ＰＲＯＣＥＳＳＩＮＧ  ＩＮＳＴＲＵＣＴＩＯＮＳ，  ＳＹＳＴＥＭＳ，  ＡＮＤ  ＭＥＴＨＯＤＳ」、１２４３６３Ｕ１と題する、米国特許出願第１４／０８２，０７３号にも関連する。
【技術分野】
【０００８】
[0008]本開示の分野は、単一命令多重データ（ＳＩＭＤ）プロセッサと多重命令多重データ（ＭＩＭＤ）プロセッサとを含む、ベクトル演算とスカラー演算とを処理するためのベクトルプロセッサおよび関連システムに関する。
【背景技術】
【０００９】
[0009]ワイヤレスコンピューティングシステムは、デジタル情報領域において最も普及した技術の１つに急速になりつつある。技術における進歩により、ワイヤレス通信デバイスは、より小型でより強力になった。たとえば、ワイヤレスコンピューティングデバイスには、一般に、小型で軽量な、ユーザが容易に持ち運べるポータブルワイヤレス電話、携帯情報端末（ＰＤＡ）、およびページングデバイスが含まれる。より具体的には、携帯電話およびインターネットプロトコル（ＩＰ）電話などのポータブルワイヤレス電話は、ワイヤレスネットワークを介して音声とデータパケットとを通信することができる。さらに、多くのそのようなワイヤレス通信デバイスには、他のタイプのデバイスが含まれる。たとえば、ワイヤレス電話には、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、および／またはオーディオファイルプレーヤが含まれ得る。また、ワイヤレス電話は、インターネットにアクセスするために使用され得るウェブインターフェースを含むことができる。さらに、ワイヤレス通信デバイスは、設計されたワイヤレス通信技術規格（たとえば、符号分割多元接続（ＣＤＭＡ）、広帯域ＣＤＭＡ（ＷＣＤＭＡ（登録商標））、およびロングタームエボリューション（ＬＴＥ（登録商標）））に従って高速ワイヤレス通信データを処理するための複合処理リソースを含む場合がある。そのため、これらのワイヤレス通信デバイスはかなりのコンピューティング能力を含む。
【００１０】
[0010]ワイヤレスコンピューティングデバイスは、より小型でより強力になるにつれて、ますますリソースの制約を受けるようになる。たとえば、画面サイズ、利用可能なメモリおよびファイルシステム空間の量、ならびに入出力能力の量は、デバイスの小さいサイズによって制限される場合がある。さらに、バッテリサイズ、バッテリによって供給される電力の量、およびバッテリの寿命も制限される。デバイスのバッテリ寿命を増やすための１つの方法は、より少ない電力を消費するプロセッサを設計することである。
【００１１】
[0011]この関連で、ベクトルプロセッサを含むベースバンドプロセッサが、ワイヤレス通信デバイスに利用され得る。ベクトルプロセッサは、ベクトル、すなわちデータのアレイに働く高水準の演算を提供するベクトルアーキテクチャを有する。ベクトル処理は、１つのデータセットに対してベクトル命令を実行し、次いで、ベクトル内の後続要素のためにベクトル命令を再フェッチし復号することとは対照的に、ベクトル命令を１度フェッチし、次いで、データ要素のアレイ全体にわたってベクトル命令を複数回実行することを伴う。このプロセスにより、他の要因の中でも、各ベクトル命令はより少ない回数しかフェッチされる必要がないので、プログラムを実行するために必要とされるエネルギーの低減が可能になる。ベクトル命令は、同時に複数のクロック周期にわたって長いベクトルに対して動作するので、簡易な順序ベクトル命令ディスパッチを用いて、高度の並列性が達成可能である。
【００１２】
[0012]図１は、ワイヤレスコンピュータデバイスなどのコンピューティングデバイス内で利用され得る例示的なベースバンドプロセッサ１０を示す。ベースバンドプロセッサ１０は、特定のアプリケーションのための関数固有ベクトル処理を提供することに各々が専用化された複数の処理エンジン（ＰＥ）１２を含む。この例では、６つの別個のＰＥ１２（０）〜ＰＥ１２（５）がベースバンドプロセッサ１０内に設けられる。ＰＥ１２（０）〜ＰＥ１２（５）は各々、共有メモリ１６からＰＥ１２（０）〜ＰＥ１２（５）に供給される固定Ｘビット幅のベクトルデータ１４に対してベクトル処理を提供するように構成される。たとえば、ベクトルデータ１４は５１２ビット幅であり得る。ベクトルデータ１４は、Ｘのより小さい倍数のビット幅のベクトルデータサンプルセット１８（０）〜１８（Ｙ）（たとえば、１６ビットおよび３２ビットのサンプルセット）内で定義され得る。このようにして、ＰＥ１２（０）〜ＰＥ１２（５）は、高度の並列性を達成するために、ＰＥ１２（０）〜ＰＥ１２（５）に並列に供給される複数のベクトルデータサンプルセット１８に対するベクトル処理を提供することが可能である。各ＰＥ１２（０）〜ＰＥ１２（５）は、ベクトルデータ１４上で処理されるベクトル命令の結果を記憶するためのベクトルレジスタファイル（ＶＲ）を含む場合がある。
【００１３】
[0013]図１のベースバンドプロセッサ１０内の各ＰＥ１２（０）〜ＰＥ１２（５）は、特定のタイプの固定演算を効率的に実行するように特に設計された、特定の専用回路とハードウェアとを含む。たとえば、図１のベースバンドプロセッサ１０は、別個のＷＣＤＭＡのＰＥ１２（０）、ＰＥ１２（１）と、ＬＴＥのＰＥ１２（４）、ＰＥ１２（５）とを含むが、これは、ＷＣＤＭＡおよびＬＴＥが異なるタイプの特殊な演算を伴うからである。したがって、別個のＷＣＤＭＡ固有ＰＥ１２（０）、ＰＥ１２（１）とＬＴＥ固有ＰＥ１２（４）、ＰＥ１２（５）とを設けることによって、ＰＥ１２（０）、ＰＥ１２（１）、ＰＥ１２（４）、ＰＥ１２（５）の各々は、高効率演算のための、ＷＣＤＭＡおよびＬＴＥ用の頻繁に実行される関数に固有の特殊な専用回路を含むように設計され得る。この設計は、効率的でない方式ではあるが、より多数の無関係な演算をサポートするために柔軟であるように設計された、より一般的な回路とハードウェアとを含むスカラー処理エンジンとは対照的である。
【００１４】
[0014]ＣＤＭＡワイヤレスベースバンド動作は、可変長の拡散信号データシーケンスの逆拡散を必要とする。拡散信号データシーケンスは、より大きい帯域幅にわたってデータ信号を拡散するために、チップシーケンスを使用してＣＤＭＡ変調された元のデータ信号である。チップは、直接シーケンススペクトル拡散（ＤＳＳＳ）コードのパルスである。逆拡散されるべき拡散信号データシーケンスは、出力拡散信号データシーケンスとして実行ユニットによって供給される場合がある。ＣＤＭＡ処理動作を含むベクトルプロセッサでは、ベクトルプロセッサは、実行ユニットから出力され、ベクトルデータメモリに記憶された後に、拡散信号ベクトルデータシーケンスの逆拡散を実行する回路を含むことができる。この関連で、ベクトルデータメモリに記憶された拡散信号ベクトルデータシーケンスは、後処理動作においてベクトルデータメモリからフェッチされ、元のデータ信号を復元するために相関拡散コードシーケンスまたはチップシーケンスを用いて逆拡散される。拡散前の元のデータサンプルである逆拡散ベクトルデータシーケンスは、ベクトルデータメモリに戻されて記憶される。この後処理動作は、実行ユニットによる次のベクトル処理動作を遅延させる可能性があり、実行ユニット内のコンピュータ構成要素が過少利用される原因になる。さらに、逆拡散されるべき拡散信号ベクトルデータシーケンスは実行ユニットからの異なるデータフローパスと交差するので、拡散コードシーケンスを使用する拡散信号ベクトルシーケンスの逆拡散は、並列化することが困難である。
【発明の概要】
【００１５】
[0015]本明細書で開示される実施形態は、スペクトル拡散シーケンスのインフライト逆拡散を提供するために、実行ユニットとベクトルデータメモリとの間のデータフローパスにおいて逆拡散回路を利用するベクトル処理エンジン（ＶＰＥ）を含む。たとえば、スペクトル拡散シーケンスは、符号分割多元接続（ＣＤＭＡ）チップシーケンスであり得る。関連するベクトル処理の命令、システム、および方法も開示される。逆拡散回路は、ＶＰＥ内の実行ユニットとベクトルデータメモリとの間のデータフローパス内に設けられる。逆拡散回路は、出力ベクトルデータサンプルセットが実行ユニットからベクトルデータメモリに出力データフローパスを介して供給されている間に、インフライトの実行ユニットからの出力ベクトルデータサンプルセットを使用して、スペクトル拡散シーケンスを逆拡散するように構成される。出力ベクトルデータサンプルセットのインフライト逆拡散は、実行ユニットによって供給された出力ベクトルデータサンプルセットが、ベクトルデータメモリに記憶される前に逆拡散されることを意味し、その結果、出力ベクトルデータサンプルセットは逆拡散されたフォーマットでベクトルデータメモリに記憶される。逆拡散スペクトル拡散シーケンス（ＤＳＳＳ）は、実行ユニット内で実行されるべき次のベクトル処理動作を遅延させる可能性がある、さらなる後処理ステップを必要とせずに、ベクトルデータメモリに逆拡散された形式で記憶される場合がある。したがって、ＶＰＥ内のデータフローパスの効率は、スペクトル拡散シーケンスの逆拡散によって制限されない場合がある。逆拡散スペクトル拡散シーケンスがベクトルデータメモリに記憶されるとき、実行ユニット内の次のベクトル処理は、データフローの制限ではなく、コンピュータリソースのみによって制限される場合がある。
【００１６】
[0016]この関連で、一実施形態では、ベクトル処理動作を実行する少なくとも１つの実行ユニットによって生成された、結果として生じる出力ベクトルデータサンプルセットをインフライト逆拡散するように構成されたＶＰＥが提供される。ＶＰＥは、少なくとも１つのベクトルデータファイルを備える。ベクトルデータファイルは、ベクトル処理動作用の少なくとも１つの入力データフローパス内にフェッチされた入力ベクトルデータサンプルセットを供給するように構成される。ベクトルデータファイルはまた、記憶されるべき少なくとも１つの出力データフローパスからの少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを受信するように構成される。ＶＰＥはまた、少なくとも１つの入力データフローパス内に設けられた少なくとも１つの実行ユニットを備える。実行ユニットは、入力ベクトルデータサンプルセットを受信するように構成される。実行ユニットはまた、レジスタファイルからコードシーケンスベクトルデータサンプルセットを受信するように構成される。実行ユニットはまた、少なくとも１つの入力データフローパス上に、結果として生じる出力ベクトルデータサンプルセットを供給するために、入力ベクトルデータサンプルセットをコードシーケンスベクトルデータサンプルセットと乗算するように構成される。ＶＰＥはまた、少なくとも１つの逆拡散回路を含む。逆拡散回路は、、結果として生じる出力ベクトルデータサンプルセットを受信するように構成される。逆拡散回路はまた、、結果として生じる出力ベクトルデータサンプルセットが少なくとも１つのベクトルデータファイルに記憶されることなく、少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給するために、、結果として生じる出力ベクトルデータサンプルセットを逆拡散するように構成される。逆拡散回路はまた、少なくとも１つの出力データフローパス上に少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給するように構成される。
【００１７】
[0017]別の実施形態では、ベクトル処理動作を実行する少なくとも１つの実行ユニットによって生成された、結果として生じる出力ベクトルデータサンプルセットをインフライト逆拡散するように構成されたＶＰＥが提供される。ＶＰＥは、少なくとも１つのベクトルデータファイル手段を備える。ベクトルデータファイル手段は、ベクトル処理動作用の少なくとも１つの入力データフローパス手段内にフェッチされた入力ベクトルデータサンプルセットを供給するための手段を備える。ベクトルデータファイル手段はまた、記憶されるべき少なくとも１つの出力データフローパス手段からの少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを受信するための手段を備える。ＶＰＥはまた、少なくとも１つの入力データフローパス手段内に設けられた少なくとも１つの実行ユニット手段を備える。実行ユニット手段は、入力ベクトルデータサンプルセットを受信するための手段を備える。実行ユニット手段はまた、レジスタファイルからコードシーケンスベクトルデータサンプルセットを受信するための手段を備える。実行ユニット手段はまた、少なくとも１つの入力データフローパス手段上に、結果として生じる出力ベクトルデータサンプルセットを供給するために、入力ベクトルデータサンプルセットをコードシーケンスベクトルデータサンプルセットと乗算するための乗算手段を備える。
【００１８】
[0018]さらに、ＶＰＥはまた、少なくとも１つの逆拡散回路手段を備える。逆拡散回路手段は、、結果として生じる出力ベクトルデータサンプルセットを受信するための手段を備える。逆拡散回路手段はまた、、結果として生じる出力ベクトルデータサンプルセットが少なくとも１つのベクトルデータファイル手段に記憶されることなく、少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給するために、、結果として生じる出力ベクトルデータサンプルセットをコードシーケンスベクトルデータサンプルセットと逆拡散するための逆拡散手段を備える。逆拡散回路手段はまた、少なくとも１つの出力データフローパス手段上に少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給するための手段を備える。
【００１９】
[0019]別の実施形態では、ベクトル処理動作を実行する少なくとも１つの実行ユニットによって生成された、結果として生じる出力ベクトルデータサンプルセットをインフライト逆拡散する方法が提供される。方法は、少なくとも１つのベクトルデータファイルから、ベクトル処理動作用の少なくとも１つの入力データフローパス内にフェッチされた入力ベクトルデータサンプルセットを供給することを備える。方法はまた、少なくとも１つの入力データフローパス内に設けられた少なくとも１つの実行ユニット内の少なくとも１つの入力データフローパス上で入力ベクトルデータサンプルセットを受信することを備える。方法はまた、レジスタファイルからコードシーケンスベクトルデータサンプルセットを受信することを備える。方法はまた、少なくとも１つの入力データフローパス上に、結果として生じる出力ベクトルデータサンプルセットを供給するために、入力ベクトルデータサンプルセットをコードシーケンスベクトルデータサンプルセットと乗算することを備える。方法はまた、、結果として生じる出力ベクトルデータサンプルセットが少なくとも１つのベクトルデータファイルに記憶されることなく、少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給するために、、結果として生じる出力ベクトルデータサンプルセットを逆拡散することを備える。方法はまた、少なくとも１つのベクトルデータファイルに少なくとも１つの出力データフローパスからの少なくとも１つの逆拡散された、結果として生じる出力ベクトルデータサンプルセットを記憶することを備える。
【図面の簡単な説明】
【００２０】
【図１】特定のアプリケーション向けの関数固有ベクトル処理を提供するために各々が専用化された、複数のベクトル処理エンジン（ＶＰＥ）を含む例示的なベクトルプロセッサの概略図。
【図２】ＶＰＥ内に設けられた共通の回路およびハードウェアが、別個のＶＰＥを設ける必要なしに複数のアプリケーションまたは技術のために、特定のタイプのベクトル演算を高効率な方式で実行するために複数のモードでプログラムされ得るように、プログラム可能なデータパス構成を有するＶＰＥを含む例示的なベースバンドプロセッサの概略図。
【図３】ＶＰＥによってサポートされるフィルタベクトル処理動作において提供され得るディスクリート有限インパルス応答（ＦＩＲ）フィルタの概略図。
【図４】再フェッチおよび電力消費が低減される精度フィルタベクトル処理動作を提供するためのフィルタ係数データを用いて処理されるべきシフトされた入力ベクトルデータサンプルセットを受信し、実行ユニットに供給するためにタップ付き遅延線を利用する例示的なＶＰＥの概略図。
【図５】例示的なフィルタベクトル命令に従って図４のＶＰＥにおいて実行され得る例示的なフィルタベクトル処理動作を示すフローチャート。
【図６Ａ】図４のＶＰＥ内のレジスタファイルに記憶されたフィルタタップ係数の概略図。
【図６Ｂ】図４のＶＰＥ内のベクトルデータファイルに記憶された例示的な入力ベクトルデータサンプルセットの概略図。
【図７】図４のＶＰＥにおいて提供され得る例示的なタップ付き遅延線とオプションのシャドウタップ付き遅延線とを示す概略図であって、例示的なタップ付き遅延線が、各々、ＶＰＥによって実行されるフィルタベクトル処理動作の間に、ベクトルデータメモリからの入力ベクトルデータサンプルセットとシフトされた入力ベクトルデータサンプルセットとを受信し、実行ユニットに供給するための複数のパイプラインレジスタを備える、概略図。
【図８】フィルタベクトル処理動作の間に入力ベクトルデータサンプルセット内の入力ベクトルデータサンプルをシフトするためのパイプラインレジスタの中のレーン内およびレーン間のルーティングを含む、データレーン内のパイプラインレジスタの例示的な詳細を示す、図７のタップ付き遅延線のより例示的な詳細を示す概略図。
【図９Ａ】例示的な８タップフィルタベクトル処理動作の第１のフィルタタップ実行の一部として、図４のＶＰＥ内のプライマリタップ付き遅延線に最初に記憶された入力ベクトルデータサンプルセットの概略図。
【図９Ｂ】レジスタファイルに記憶されたフィルタタップ係数、および図９Ａに示された例示的な８タップフィルタベクトル処理動作フィルタベクトル処理動作の第１のフィルタタップ実行の一部として、図４のＶＰＥ内のシャドウタップ付き遅延線に最初に記憶されたシャドウ入力ベクトルデータサンプルセットの概略図。
【図９Ｃ】例示的な８タップフィルタベクトル処理動作の第２のフィルタタップ実行の一部として、図４のＶＰＥ内のプライマリタップ付き遅延線およびシャドウタップ付き遅延線に記憶された、シフトされた入力ベクトルデータサンプルセット、ならびにレジスタファイルに記憶されたフィルタタップ係数の概略図。
【図９Ｄ】例示的な８タップフィルタベクトル処理動作の第８のフィルタタップ実行の一部として、図４のＶＰＥ内のプライマリタップ付き遅延線およびシャドウタップ付き遅延線に記憶された、シフトされた入力ベクトルデータサンプルセット、ならびにレジスタファイルに記憶されたフィルタタップ係数の概略図。
【図１０】例示的な８タップフィルタベクトル処理動作が完全に実行された後の図４のＶＰＥ内の実行ユニットの累算器のコンテンツの概略図。
【図１１】再フェッチおよび電力消費が低減される精度相関／共分散ベクトル処理動作を提供するために、シーケンス番号データを用いて処理されるべきシフトされた入力ベクトルデータサンプルセットを受信し、実行ユニットに供給するためにタップ付き遅延線を利用する例示的なＶＰＥの概略図。
【図１２Ａ】例示的な相関／共分散ベクトル処理動作に従って、インターリーブされたオンタイムおよび後発の入力ベクトルデータサンプルセットがフェッチされる、図１１のＶＰＥ内で並列に実行され得る例示的な相関／共分散ベクトル処理動作を示すフローチャート。
【図１２Ｂ】例示的な相関／共分散ベクトル処理動作に従って、インターリーブされたオンタイムおよび後発の入力ベクトルデータサンプルセットがフェッチされる、図１１のＶＰＥ内で並列に実行され得る例示的な相関／共分散ベクトル処理動作を示すフローチャート。
【図１３】図１１のＶＰＥ内のレジスタファイルに記憶された相関／共分散入力ベクトルデータサンプルセットの概略図。
【図１４】図１１のＶＰＥ内に設けられ得る例示的なタップ付き遅延線とオプションのシャドウタップ付き遅延線とを示す概略図であって、例示的なタップ付き遅延線が、各々、ＶＰＥによって実行される相関／共分散ベクトル処理動作の間に、ベクトルデータメモリからの入力ベクトルデータサンプルセットとシフトされた入力ベクトルデータサンプルセットとを受信し、実行ユニットに供給するための複数のパイプラインレジスタを備える、概略図。
【図１５Ａ】相関／共分散ベクトル処理動作の第１の処理ステージの一部として、図１１のＶＰＥ内のプライマリタップ付き遅延線に最初に供給されたベクトルデータファイルからの入力ベクトルデータサンプルセットの概略図。
【図１５Ｂ】相関／共分散ベクトル処理動作の第１の処理ステージの一部として、図１１のＶＰＥ内のシャドウタップ付き遅延線に最初に供給されたベクトルデータファイルからのシャドウ入力ベクトルデータサンプルセットの概略図。
【図１５Ｃ】相関／共分散ベクトル処理動作の第２の処理ステージの一部として、図１１のＶＰＥ内のプライマリタップ付き遅延線およびシャドウタップ付き遅延線に記憶された、シフトされた入力ベクトルデータサンプルセット、ならびにレジスタファイルに記憶されたシフトされた入力ベクトルデータサンプルセットの概略図。
【図１５Ｄ】相関／共分散ベクトル処理動作の第１４の処理ステージの一部として、図１１のＶＰＥ内のプライマリタップ付き遅延線およびシャドウタップ付き遅延線に記憶された、シフトされた入力ベクトルデータサンプルセット、ならびにレジスタファイルに記憶されたシフトされた入力ベクトルデータサンプルセットの概略図。
【図１６】例示的な相関／共分散ベクトル処理動作が完全に実行された後の図１１のＶＰＥ内の実行ユニットの累算器のコンテンツの概略図。
【図１７Ａ】別々に記憶された、結果として生じるフィルタ出力ベクトルデータサンプルの実数成分および虚数成分に記憶された、結果として生じるフィルタ出力ベクトルデータサンプルセットを示す例示的なベクトルデータファイルの図。
【図１７Ｂ】別々に記憶されたその偶数および奇数の、結果として生じるフィルタ出力ベクトルデータサンプルとともに記憶された、結果として生じるフィルタ出力ベクトルデータサンプルセットを示す例示的なベクトルデータファイルの図。
【図１８Ａ】符号付き複素数の１６ビットフォーマットでＶＰＥのベクトルデータファイルに記憶されたベクトルデータサンプルセットの例示的なインターリーブされたベクトルデータサンプルの図。
【図１８Ｂ】符号付き複素数の８ビットフォーマットでＶＰＥのベクトルデータファイルに記憶されたベクトルデータサンプルセットの例示的なインターリーブされたベクトルデータサンプルの図。
【図１９】ベクトル処理動作を実行するための少なくとも１つの実行ユニットにフォーマット変換された入力ベクトルデータサンプルセットを供給するために、入力ベクトルデータサンプルセットがベクトルデータファイルから再フェッチされる必要なしに、ベクトルデータファイルと少なくとも１つの実行ユニットとの間の少なくとも１つの入力データフローパスにおいて、入力ベクトルデータサンプルセットのインフライトフォーマット変換を提供するように構成されたフォーマット変換回路を利用する例示的なＶＰＥの概略図。
【図２０】図１９のＶＰＥにおいて実行され得る、ベクトルデータファイルと少なくとも１つの実行ユニットとの間の少なくとも１つの入力データフローパスにおける入力ベクトルデータサンプルセットの例示的なインフライトフォーマット変換を示すフローチャート。
【図２１】図１９のＶＰＥ内のタップ付き遅延線と実行ユニットとの間に設けられた例示的なフォーマット変換回路の概略図であって、フォーマット変換回路が実行ユニットへの入力データフローパス内のタップ付き遅延線によって供給される入力ベクトルデータサンプルセットのインフライトフォーマット変換を提供するように構成される、概略図。
【図２２】実行ユニットにおける受信前に入力データフローパス内で入力ベクトルデータサンプルセットのインフライトフォーマット変換を提供するために、図１９のＶＰＥにプログラミングを提供する例示的なベクトル命令データフォーマットを示す図。
【図２３】並び替えられた、結果として生じる出力データサンプルセットを供給し記憶するために、結果として生じる出力ベクトルデータサンプルセットが少なくとも１つのベクトルデータファイルに記憶されずに、少なくとも１つの実行ユニットと少なくとも１つのベクトルデータファイルとの間の少なくとも１つの出力データフローパスにおいて、結果として生じる出力ベクトルデータサンプルセットのインフライト並び替えを提供するように構成された並び替え回路を利用する例示的なＶＰＥの概略図。
【図２４】ベクトルデータファイルに並び替えた形式で記憶される図２３のＶＰＥ内のベクトルデータファイルと少なくとも１つの実行ユニットとの間の少なくとも１つの出力データフローパスにおける出力ベクトルデータサンプルセットの例示的なインフライトデインターリービングを示すフローチャート。
【図２５】ベクトルデータファイルに記憶された出力ベクトルデータサンプルセットのインフライト並び替えを提供するために、実行ユニットとベクトルデータファイルとの間の出力データフローパス内の並び替え回路を利用する例示的なＶＰＥの概略図。
【図２６】図２６Ａは、通信信号を表す例示的なベクトルデータサンプルシーケンスの図である。      図２６Ｂは、例示的な符号分割多元接続（ＣＤＭＡ）チップシーケンスの図である。      図２６Ｃは、図２６ＢのＣＤＭＡチップシーケンスで拡散された後の図２６Ａのベクトルデータサンプルシーケンスの図である。      図２６Ｄは、図２６Ａの元のベクトルデータサンプルシーケンスを復元するために、図２６ＢのＣＤＭＡチップシーケンスで図２６Ｃの拡散されたベクトルデータサンプルシーケンスを逆拡散する図である。
【図２７】逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給し記憶するために、結果として生じる出力ベクトルデータサンプルセットが少なくとも１つのベクトルデータファイルに記憶されずに、少なくとも１つの実行ユニットと少なくとも１つのベクトルデータファイルとの間の少なくとも１つの出力データフローパスにおいて、結果として生じる出力ベクトルデータサンプルセットの逆拡散を提供するように構成された逆拡散回路を利用する例示的なＶＰＥの概略図。
【図２８】少なくとも１つのベクトルデータファイル内に逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給し記憶するために、図２７のＶＰＥ内の少なくとも１つのベクトルデータファイルと少なくとも１つの実行ユニットとの間の少なくとも１つの出力データフローパスにおける、結果として生じる出力ベクトルデータサンプルセットの例示的な逆拡散を示すフローチャート。
【図２９】少なくとも１つのベクトルデータファイル内に逆拡散された、結果として生じる出力ベクトルデータサンプルセットを供給し記憶するために、結果として生じる出力ベクトルデータサンプルセットの逆拡散を提供する、図２７のＶＰＥ内の少なくとも１つの実行ユニットと少なくとも１つのベクトルデータファイルとの間の出力データフローパス内の例示的な逆拡散回路の概略図。
【図３０】マージされるべき例示的なベクトルデータサンプルとマージされた、結果として生じるベクトルデータサンプルとを示す図。
【図３１】マージされた、結果として生じる出力ベクトルデータサンプルセットを供給し記憶するために、結果として生じる出力ベクトルデータサンプルセットが少なくとも１つのベクトルデータファイルに記憶されずに、少なくとも１つの実行ユニットと少なくとも１つのベクトルデータファイルとの間の少なくとも１つの出力データフローパスにおいて、結果として生じる出力ベクトルデータサンプルセットのマージングを提供するように構成されたマージ回路を利用する例示的なＶＰＥの概略図。
【図３２】ベクトルデータファイル内に加算マージされた、結果として生じる出力ベクトルデータサンプルセットを供給し記憶するために、図３１のＶＰＥ内のベクトルデータファイルと少なくとも１つの実行ユニットとの間の少なくとも１つの出力データフローパスにおける、結果として生じる出力ベクトルデータサンプルセットの例示的な加算マージングを示すフローチャート。
【図３３】結果として生じる出力ベクトルデータサンプルセットの加算マージングと、ベクトルデータファイル内への加算マージされた、結果として生じる出力ベクトルデータサンプルセットの記憶とを提供する、図３１のＶＰＥ内の実行ユニットとベクトルデータファイルとの間の出力データフローパス内の例示的なマージ回路の概略図。
【図３４】結果として生じる出力ベクトルデータサンプルセットの最大／最小マージングと、ベクトルデータファイル内への最大／最小マージされた、結果として生じる出力ベクトルデータサンプルセットの記憶とを提供する、図３１のＶＰＥ内の実行ユニットとベクトルデータファイルとの間の出力データフローパス内の例示的なマージ回路の概略図。
【図３５】ＶＰＥ内に設けられ得る例示的なベクトル処理ステージの概略図であって、ベクトル処理ステージのうちのいくつかがプログラム可能なデータパス構成を有する例示的なベクトル処理ブロックを含む、概略図。
【図３６】各々がプログラム可能なデータパス構成を有し、図３５の例示的なＶＰＥ内の様々なベクトル処理ステージ内に設けられる、乗算器ブロックおよび累算器ブロックの例示的なベクトル処理を示すフローチャート。
【図３７】図３５のＶＰＥのベクトル処理ステージ内に設けられる複数の乗算器ブロックのより詳細な概略図であって、複数の乗算器ブロックが特定の様々なタイプのベクトル乗算演算を実行するために複数のモードでプログラムされ得るように、複数の乗算器ブロックが各々プログラム可能なデータパス構成を有する、概略図。
【図３８】８ビット×８ビットの入力ベクトルデータサンプルセットおよび１６ビット×１６ビットの入力ベクトルデータサンプルセットについての乗算演算を提供するようにプログラムされることが可能なプログラム可能なデータパス構成を有する、図３７の複数の乗算器ブロックの中のある乗算器ブロックの内部構成要素の概略図。
【図３９】図３８のＶＰＥ内の乗算器ブロックおよび累算器ブロックの一般化された概略図であって、累算器ブロックが桁上げ伝搬を低減するために冗長桁上げ保存フォーマットを利用する桁上げ保存累算器構造を利用する、概略図。
【図４０】図３５のＶＰＥ内に設けられた図３９の累算器ブロックの例示的な内部構成要素の詳細な概略図であって、累算器ブロックが冗長桁上げ保存フォーマットを用いて特定の様々なタイプのベクトル累算演算を実行するために複数のモードでプログラムされ得るように、累算器ブロックがプログラム可能なデータパス構成を有する、概略図。
【図４１】本明細書で開示された実施形態による、ベクトル処理回路とベクトル処理動作とを提供するために、本明細書で開示されたＶＰＥを含むことができるベクトルプロセッサを含むことができる、例示的なプロセッサベースシステムのブロック図。
【発明を実施するための形態】
【００２１】
[0072]ここで図面を参照すると、本開示のいくつかの例示的な実施形態が記載される。「例示的」という単語は、本明細書において、「例、事例、または例示として働くこと」を意味するために使用される。本明細書で「例示的」と記載されたいかなる実施形態も、必ずしも他の実施形態より好ましいか、または有利であると解釈されるべきであるとは限らない。
【００２２】
[0073]本明細書で開示される実施形態は、スペクトル拡散シーケンスのインフライト逆拡散を提供するために、実行ユニットとベクトルデータメモリとの間のデータフローパスにおいて逆拡散回路を利用するベクトル処理エンジン（ＶＰＥ）も含む。たとえば、スペクトル拡散シーケンスは、符号分割多元接続（ＣＤＭＡ）チップシーケンスであり得る。関連するベクトル処理の命令、システム、および方法も開示される。逆拡散回路は、ＶＰＥ内の実行ユニットとベクトルデータメモリとの間のデータフローパス内に設けられる。逆拡散回路は、出力ベクトルデータサンプルセットが実行ユニットからベクトルデータメモリに出力データフローパスを介して供給されている間に、インフライトの実行ユニットからの出力ベクトルデータサンプルセットを使用して、スペクトル拡散シーケンスを逆拡散するように構成される。出力ベクトルデータサンプルセットのインフライト逆拡散は、実行ユニットによって供給された出力ベクトルデータサンプルセットが、ベクトルデータメモリに記憶される前に逆拡散されることを意味し、その結果、出力ベクトルデータサンプルセットは逆拡散されたフォーマットでベクトルデータメモリに記憶される。逆拡散スペクトル拡散シーケンス（ＤＳＳＳ）は、実行ユニット内で実行されるべき次のベクトル処理動作を遅延させる可能性がある、さらなる後処理ステップを必要とせずに、ベクトルデータメモリに逆拡散された形式で記憶され得る。したがって、ＶＰＥ内のデータフローパスの効率は、スペクトル拡散シーケンスの逆拡散によって制限されない場合がある。逆拡散スペクトル拡散シーケンスがベクトルデータメモリに記憶されるとき、実行ユニット内の次のベクトル処理は、データフローの制限ではなく、コンピュータリソースのみによって制限される場合がある。
【００２３】
[0074]この関連で、図２は、ベクトル処理エンジン（ＶＰＥ）２２とも呼ばれる例示的なベクトル処理ユニット２２を含むベースバンドプロセッサ２０の概略図である。下記でより詳細に説明されるように、ＶＰＥ２２は、実行ユニット８４と、本明細書で開示される例示的なベクトル処理動作を含むベクトル処理動作を提供する他の特定の例示的な回路および機能とを含む。ベースバンドプロセッサ２０およびそのＶＰＥ２２は、半導体ダイ２４内に設けられ得る。この実施形態では、下記でより詳細に説明されるように、ベースバンドプロセッサ２０は、様々なプログラム可能なデータパス構成を提供するためにプログラムされ得るプログラム可能なデータパス２６を含む共通のＶＰＥ２２を含む。このようにして、ＶＰＥ２２内の実行ユニット８４とベクトルデータファイル８２との間のプログラム可能なデータパス２６は、ベースバンドプロセッサ２０内に別々のＶＰＥ２２を設ける必要なしに、様々な動作モードで様々な特定のタイプのベクトル処理動作を提供するようにプログラムおよび再プログラムされ得る。
【００２４】
[0075]図３で始まる効率的な処理について、この開示におけるＶＰＥ２２によって提供されるように構成された特定の回路とベクトル処理動作とを説明する前に、図２のベースバンドプロセッサ２０の構成要素が最初に記載される。この非限定的な例におけるベースバンドプロセッサ２０は、５１２ビットベクトルプロセッサである。ベースバンドプロセッサ２０は、ベースバンドプロセッサ２０内のベクトル処理を提供するＶＰＥ２２をサポートするために、ＶＰＥ２２に加えて構成要素を含む。ベースバンドプロセッサ２０は、ベクトルユニットデータメモリ（ＬＭＥＭ）３２からベクトルデータ３０を受信し記憶するように構成された、ベクトルデータファイル８２としても知られる、ベクトルレジスタを含む。たとえば、ベクトルデータ３０はＸビット幅であり、「Ｘ」は設計選択に従って定義される（たとえば、５１２ビット）。ベクトルデータ３０は、ベクトルデータサンプルセット３４に分割され得る。非限定的な例として、ベクトルデータ３０は２５６ビット幅であり得るし、より小さいベクトルデータサンプルセット３４（Ｙ）〜３４（０）を備える場合がある。いくつかのベクトルデータサンプルセット３４（Ｙ）〜３４（０）は、例として１６ビット幅であり得るし、ベクトルデータサンプルセット３４（Ｙ）〜３４（０）の他は、３２ビット幅であり得る。ＶＰＥ２２は、高度の並列性を達成するために、ＶＰＥ２２に並列に供給されるいくつかの選ばれたベクトルデータサンプルセット３４（Ｙ）〜３４（０）に対するベクトル処理を提供することが可能である。ベクトルデータファイル８２はまた、ＶＰＥ２２がベクトルデータ３０を処理するときに生成される結果を記憶するように構成される。いくつかの実施形態では、ＶＰＥ２２は、より速いベクトル命令実行時間を提供するようにレジスタ書込みを低減するために、ベクトルデータファイル８２内に中間ベクトル処理結果を記憶しないように構成される。この構成は、スカラー処理デジタル信号プロセッサ（ＤＳＰ）などの、レジスタに中間結果を記憶するスカラー処理エンジンによって実行されるスカラー命令とは反対である。
【００２５】
[0076]図２のベースバンドプロセッサ２０は、ベクトル命令の条件付き実行において使用するためにＶＰＥ２２に条件を与えるように、およびベクトル命令実行の結果として更新された条件を記憶するように構成された条件レジスタ３６も含む。ベースバンドプロセッサ２０はまた、累算レジスタ３８と、グローバルレジスタを含むグローバルレジスタファイル４０と、アドレスレジスタ４２とを含む。累算レジスタ３８は、ベクトルデータ３０に対していくつかの特殊な演算を実行する結果として累算された結果を記憶するために、ＶＰＥ２２によって使用されるように構成される。グローバルレジスタファイル４０は、ＶＰＥ２２によってサポートされるいくつかのベクトル命令のためのスカラーオペランドを記憶するように構成される。アドレスレジスタ４２は、ベクトルユニットデータメモリ３２からベクトルデータ３０を取り出し、ベクトルユニットデータメモリ３２にベクトル処理結果を記憶するために、ベクトルロードによってアドレス指定可能なアドレスを記憶し、ＶＰＥ２２によってサポートされる命令を記憶するように構成される。
【００２６】
[0077]引き続き図２を参照すると、この実施形態におけるベースバンドプロセッサ２０は、ＶＰＥ２２によって提供されるベクトル処理に加えて、ベースバンドプロセッサ２０においてスカラー処理を提供する（「整数ユニット」とも呼ばれる）スカラープロセッサ４４も含む。高効率演算のために実行される命令のタイプに基づいて、ベクトル命令演算とスカラー命令演算の両方をサポートするように構成された中央処理装置（ＣＰＵ）を設けることが望ましい場合がある。この実施形態では、スカラープロセッサ４４は、非限定的な例として、３２ビット縮小命令セットコンピューティング（ＲＩＳＣ）スカラープロセッサである。スカラープロセッサ４４は、この例では、スカラー命令処理をサポートするための算術論理ユニット（ＡＬＵ）４６を含む。ベースバンドプロセッサ２０は、プログラムメモリ５０から命令をフェッチし、フェッチされた命令を復号し、命令タイプに基づいて、スカラープロセッサ４４に、またはベクトルデータパス５３を通ってＶＰＥ２２に、フェッチされた命令を向けるように構成された命令ディスパッチ回路４８を含む。スカラープロセッサ４４は、スカラー命令を実行するときにスカラープロセッサ４４によって使用される汎用レジスタ５４を含む。スカラー命令実行のためにスカラープロセッサ４４によるアクセス用に、メインメモリから汎用レジスタ５４にデータを供給するように、整数ユニットデータメモリ（ＤＭＥＭ）５６がベースバンドプロセッサ２０に含まれる。ＤＭＥＭ５６は、非限定的な例としてキャッシュメモリであり得る。ベースバンドプロセッサ２０は、メモリコントローラデータパス６２を通ってメインメモリへのアクセスを求めるベクトル命令をスカラープロセッサ４４が実行しているときに汎用レジスタ５４からメモリアドレスを受信するように構成されたメモリコントローラレジスタ６０を含むメモリコントローラ５８も含む。
【００２７】
[0078]ＶＰＥ２２によるベクトル命令処理によってサポートされることが望ましい場合がある特殊ベクトル処理動作の１つのタイプは、フィルタリングである。フィルタ動作は、サンプリングされた入力時間関数の重畳の量子化時間領域表現と、フィルタの重み付け関数の表現とを計算する。時間領域内の重畳は、周波数領域内の乗算に対応する。このように、デジタルフィルタは、間隔が均一なサンプル間隔で実行される乗算および加算の拡張シーケンスにより、ＶＰＥ２２において実現され得る。たとえば、ディスクリート有限インパルス応答（ＦＩＲ）フィルタは、フィルタ関数を計算するために、「Ｙ」計算フィルタ係数を有する遅延線上の遅延タップの有限数（Ｙ）を使用して実施され得る。
【００２８】
[0079]この関連で、図３は、図２のＶＰＥ２２におけるフィルタベクトル処理動作を介してサポートされることが望ましい場合がある、例示的なディスクリートＦＩＲフィルタ６４の概略図である。デジタル化入力信号６６（ｘ［ｎ］）は、「フィルタ遅延タップ」６８（１）〜６８（Ｙ−１）と呼ばれる遅延構造を通ってデジタル化入力信号サンプル（ｘ［０］，ｘ［１］，．．．ｘ［ｎ］）を渡すことによってフィルタリングされ得る。フィルタ遅延タップ６８（１）〜６８（Ｙ−１）は、フィルタサンプル被乗数７２（０）〜７２（Ｙ−１）を供給するために、すべてのデジタル化入力信号サンプル（すなわち、ｘ［０］，ｘ［１］，．．．ｘ［ｎ］）が各々フィルタ係数（ｈ［０］〜ｈ（Ｙ−１））によって乗算される（すなわち、ｈ（ｌ）＊ｘ［ｎ−ｌ］）ために、クロックされたデジタル化入力信号サンプル（すなわち、ｘ［０］，ｘ［１］，．．．ｘ［ｎ］）を乗算器７０（０）〜７０（Ｙ−１）の中にシフトする。フィルタサンプル被乗数７２（０）〜７２（Ｙ−１）は、結果として生じるフィルタ処理された出力信号７６（すなわち、ｙ［ｎ］）を供給するために、加算器（すなわち、アダー）７４（１）〜７４（Ｙ−１）によって一緒に加算される。このように、図３のディスクリートＦＩＲフィルタ６４は以下のように要約され得る。  
【００２９】
【数１】
2016537725.tif 000003
【００３０】
ここで、  
ｎは入力信号サンプルの数であり、  
ｘ［ｎ］はデジタル化入力信号６６であり、  
ｙ［ｎ］は、結果として生じるフィルタ処理された出力信号７６であり、  
ｈ（ｌ）はフィルタ係数であり、  
Ｙはフィルタ係数の数である。  
フィルタ係数ｈ（ｌ）は複素数であり得る。一態様では、ＶＰＥ２２は、（たとえば、グローバルレジスタファイル４０から）フィルタ係数を受信することができる。ＶＰＥ２２は、ＦＩＲフィルタ関数を実行するために受信されたフィルタ係数を直接使用することができ、その場合、上記の式におけるフィルタ係数ｈ（ｌ）は、受信されたフィルタ係数を表すことができる。代替として、ＶＰＥ２２は、ＦＩＲフィルタ関数を実行するためにそれらを使用する前に、受信されたフィルタ係数の複素共役を計算することができ、その場合、上記の式におけるフィルタ係数ｈ（ｌ）は、受信されたフィルタ係数の共役を表すことができる。
【００３１】
[0080]図３の上記のディスクリートＦＩＲフィルタ６４は、以下のように書き直され得る。
ｙ［ｎ］＝ｘ［ｎ］＊ｈ０＋ｘ［ｎ−１］＊ｈ１＋．．．＋ｘ［ｎ−７］＊ｈ７
【００３２】
[0081]しかしながら、図３のディスクリートＦＩＲフィルタ６４などのフィルタリング演算は、ベクトルプロセッサにおいて提供される特殊データフローパスに起因して、ベクトルプロセッサにおいて並列化することは困難であり得る。フィルタリングされるべき入力ベクトルデータサンプルセット（たとえば、ベクトル化されたデジタル化入力信号６６）が、フィルタ遅延タップ（たとえば、６８（１）〜６８（Ｙ−１））の間でシフトされると、入力ベクトルデータサンプルセットはベクトルデータファイルから再フェッチされ、したがって電力消費が増大し、スループットが低減される。ベクトルデータファイルからの入力ベクトルデータサンプルセットの再フェッチを最小化するために、ベクトルプロセッサ内のデータフローパスは、効率的な並列化処理のために、フィルタ遅延タップ（たとえば、６８（１）〜６８（Ｙ−１））と同じ数の乗算器（たとえば、７０（０）〜７０（Ｙ−１））を設けるように構成される可能性がある。しかしながら、他のベクトル処理動作は、より少ない乗算器しか必要としない場合があり、それにより、データフローパス内の乗算器の非効率的なスケーリングおよび過少利用がもたらされる。スケーラビリティを提供するために、乗算器の数がフィルタ遅延タップの数よりも少なくなるように削減された場合、フィルタ処理の様々なフェーズに対して同じ入力ベクトルデータサンプルセットを取得するために、メモリにより多くの再フェッチが必要とされることによって、並列化が制限される。
【００３３】
[0082]この関連で、図４は、図２のＶＰＥ２２として提供され得る例示的なＶＰＥ２２（１）の概略図である。下記でより詳細に記載されるように、図４のＶＰＥ２２（１）は、ベクトルデータサンプルの再フェッチが除去または低減され、電力消費が低減される、ＶＰＥ２２（１）内の精度フィルタベクトル処理動作を提供する。精度フィルタベクトル処理動作は、ベクトルデータサンプルの再フェッチを必要とし、それにより結果として電力消費が増大する、中間結果の記憶を必要とするフィルタベクトル処理動作と比較して、ＶＰＥ２２（１）において提供され得る。ベクトルデータファイルからの入力ベクトルデータサンプルの再フェッチを除去または最小化して、電力消費を低減し、処理効率を改善するために、ＶＰＥ２２（１）内のベクトルデータファイル８２（０）〜８２（Ｘ）と（「ＥＵ」とも標記される）実行ユニット８４（０）〜８４（Ｘ）との間の入力データフローパス８０（０）〜８０（Ｘ）にタップ付き遅延線７８が含まれる。「Ｘ」＋１は、この例におけるベクトルデータサンプルの処理用にＶＰＥ２２（１）内に設けられる並列入力データレーンの最大数である。タップ付き遅延線７８は、ベクトルデータファイル８２（０）〜８２（Ｘ）の対応するサブセットまたはすべてから入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の入力ベクトルデータサンプル８６のサブセットまたはすべてとして、タップ付き遅延線入力８８（０）〜８８（Ｘ）上で入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を受信するように構成される。入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、この例では８６（０）、８６（１）、．．．、および８６（Ｘ）である、「Ｘ＋１」個の入力ベクトルデータサンプル８６から構成される。
【００３４】
[0083]引き続き図４を参照すると、タップ付き遅延線７８は、フィルタベクトル処理動作のために実行ユニット８４（０）〜８４（Ｘ）によって処理されるべき、ベクトルデータファイル８２（０）〜８２（Ｘ）からフェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を記憶する。下記の図６および図７に関して下記でより詳細に説明されるように、タップ付き遅延線７８は、実行ユニット８４（０）〜８４（Ｘ）にシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するために、ＶＰＥ２２（１）によって実行されるべきフィルタベクトル命令に従うフィルタベクトル処理動作のフィルタ遅延タップ（すなわち、フィルタ処理ステージ）ごとに、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）をシフトするように構成される。シフトされた入力ベクトルデータサンプル８６Ｓのすべては、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を備える。タップ付き遅延線７８は、フィルタベクトル処理動作中、実行ユニット８４（０）〜８４（Ｘ）の実行ユニット入力９０（０）〜９０（Ｘ）にシフトされた入力ベクトルデータサンプル８６Ｓ（０）〜８６Ｓ（Ｘ）を供給する。このようにして、フィルタベクトル処理動作のフィルタタップのためのシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）に対して実行される動作に基づく中間フィルタ結果は、ＶＰＥ２２（１）によって実行されるフィルタベクトル処理動作の各処理ステージの間、記憶、シフト、およびベクトルデータファイル８２（０）〜８２（Ｘ）から再フェッチされる必要がない。このように、タップ付き遅延線７８は、ＶＰＥ２２（１）によって実行されるフィルタベクトル処理動作についての電力消費を低減し、処理効率を上げることができる。
【００３５】
[0084]「ベクトル処理ステージ」とも呼ばれるＶＰＥ２２（１）内の処理ステージは、特定のタスクまたは動作を実行するように設計された回路と関連するベクトルデータパスとを備える。ベクトル処理動作は、いくつかの異なる処理ステージにおいて、ＶＰＥ２２（１）によって実行される場合がある。各処理ステージは、ＶＰＥ２２（１）の１つまたは複数のクロックサイクルにわたって実行される場合がある。その結果、ＶＰＥ２２（１）内のベクトル処理動作の実行は、ベクトル処理動作の各処理ステージが各々１つまたは複数のクロックサイクルを消費する可能性があるので、完了するために多くのクロックサイクルを要する可能性がある。たとえば、処理ステージは、図４のＶＰＥ２２（１）内のタップ付き遅延線７８の中に入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）をフェッチすることを含む場合がある。ＶＰＥ２２（１）内のベクトル処理ステージはパイプライン化され得る。
【００３６】
[0085]実行ユニット８４（０）〜８４（Ｘ）は、フェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を処理する１つまたは複数のパイプラインステージを含む場合がある。たとえば、実行ユニット８４（０）〜８４（Ｘ）内の１つのパイプラインステージは、累算演算を実行するように構成された累算器から構成される累算ステージを含む場合がある。別の例として、実行ユニット８４（０）〜８４（Ｘ）内の別のパイプラインステージは、乗算演算を実行するように構成された乗算器から構成される乗算ステージを含む場合がある。
【００３７】
[0086]引き続き図４を参照すると、実行ユニット８４（０）〜８４（Ｘ）は、フィルタベクトル処理動作のための図２のグローバルレジスタファイル４０に記憶されたフィルタ係数９２（０）〜９２（Ｙ−１）の中からフィルタ係数９２を受信する、ここで、「Ｙ」はフィルタベクトル処理動作のためのフィルタ係数の数に等しい場合がある。実行ユニット８４（０）〜８４（Ｘ）は、各々、実行ユニット８４（０）〜８４（Ｘ）内に中間フィルタベクトルデータ出力サンプルを供給するために、ベクトルフィルタ処理動作の各処理ステージの間に、受信されたフィルタ係数９２（０）、９０（１）、．．．９０（Ｙ−１）のうちの１つを、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）のシフトされた入力ベクトルデータサンプル８６Ｓ（０）、８６Ｓ（１）、．．．８６Ｓ（Ｘ）と乗算するように構成される。中間フィルタベクトルデータ出力サンプルセットは、実行ユニット８４（０）〜８４（Ｘ）の各々において累算される（すなわち、前に累算されたフィルタ出力ベクトルデータサンプルが現在の累算されたフィルタ出力ベクトルデータサンプルに加算される）。これにより、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）内のシフトされた入力ベクトルデータサンプル８６Ｓ（０）、８６Ｓ（１）、．．．８６Ｓ（Ｘ）ごとに、それぞれ、出力データフローパス９８（０）〜９８（Ｘ）上の実行ユニット出力９６（０）〜９６（Ｘ）上に実行ユニット８４（０）〜８４（Ｘ）によって供給される、最終的な、結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）がもたらされる。結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）は、この例では９４（０）、９４（１）、．．．、および９４（Ｘ）である、「Ｘ＋１」個の、結果として生じるフィルタ出力ベクトルデータサンプル９４から構成される。実行ユニット８４（０）〜８４（Ｘ）によって生成された中間フィルタベクトルデータ出力サンプルセットを記憶しシフトする必要なしに、結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）は、ＶＰＥ２２（１）によるさらなる使用および／または処理のために、それぞれのベクトルデータファイル８２（０）〜８２（Ｘ）に戻されて記憶される。
【００３８】
[0087]引き続き図４を参照すると、下記でより詳細に説明されるように、タップ付き遅延線７８は、処理されているベクトル命令に従って制御されるようにプログラム可能である。フィルタベクトル命令が処理されていない場合、タップ付き遅延線７８は、ベクトルデータファイル８２（０）〜８２（Ｘ）と実行ユニット８４（０）〜８４（Ｘ）との間の入力データフローパス８０（０）〜８０（Ｘ）に含まれないようにプログラムされ得る。この実施形態では、タップ付き遅延線７８は、フィルタベクトル処理動作のフィルタタップごとにシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するために、ベクトルデータファイル８２（０）〜８２（Ｘ）から受信された入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）をロードしシフトするように構成される。このように、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）は、フィルタベクトル処理動作のフィルタタップの実行のために、実行ユニット８４（０）〜８４（Ｘ）に供給され得る。タップ付き遅延線７８がないと、フィルタベクトル処理動作の次のフィルタタップのために、実行ユニット８４（０）〜８４（Ｘ）にシフトされた中間入力ベクトルデータサンプルセットを再び供給するために、別個のシフティングプロセスが実行される必要があるはずであり、それにより、遅延時間が増大し、さらなる電力が消費される。さらに、フィルタベクトル処理動作中、ベクトルデータファイル８２（０）〜８２（Ｘ）からのシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）の再フェッチ遅延によって、ＶＰＥ２２（１）内の入力データフローパス８０（０）〜８０（Ｘ）および出力データフローパス９８（０）〜９８（Ｘ）の効率が制限される。
【００３９】
[0088]シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）は、実行ユニット８４（０）〜８４（Ｘ）に局在するタップ付き遅延線７８によって供給される。実行ユニット８４（０）〜８４（Ｘ）におけるベクトル処理は、データフローの制限ではなく、コンピュータリソースのみによって制限される。これは、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）がベクトルデータファイル８２（０）〜８２（Ｘ）からフェッチされるまで待つ必要なしに、実行ユニット８４（０）〜８４（Ｘ）が、ベクトル処理動作を実行するためにシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を受信することに、連続して、または実質的に連続して忙しいことを意味する。
【００４０】
[0089]さらに、図４のＶＰＥ２２（１）によって実行されるフィルタベクトル処理動作は、タップ付き遅延線７８を利用することによってより精密になり得るが、これは、実行ユニット８４（０）〜８４（Ｘ）内の中間フィルタ処理ステージのための出力累算がベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される必要がないからである。実行ユニット８４（０）〜８４（Ｘ）からベクトルデータファイル８２（０）〜８２（Ｘ）への中間出力ベクトルデータサンプルセットの記憶は、丸めをもたらす可能性がある。したがって、次の中間出力ベクトルデータサンプルセットがベクトル処理動作のために実行ユニット８４（０）〜８４（Ｘ）に供給されるとき、ベクトル処理動作の各乗算フェーズの間に任意の丸め誤差が伝搬および加算される。対照的に、図４のＶＰＥ２２（１）の例では、実行ユニット８４（０）〜８４（Ｘ）によって計算された中間出力ベクトルデータサンプルセットは、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される必要がない。実行ユニット８４（０）〜８４（Ｘ）は、前の中間出力ベクトルデータサンプルセットを次のフィルタ遅延タップのための中間出力ベクトルデータサンプルセットと累算することができるが、これは、タップ付き遅延線７８が、処理されるべきベクトル処理動作の間に、実行ユニット８４（０）〜８４（Ｘ）にシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するからであり、結果は前のフィルタ遅延タップのための前のベクトルデータサンプルセットと累算される。
【００４１】
[0090]引き続き図４を参照すると、この実施形態におけるＶＰＥ２２（１）は、並列化処理のための（ＶＬＡＮＥ０  １００（０）〜ＶＬＡＮＥＸ  １００（Ｘ）と標記された）複数のベクトルデータレーンから構成される。各ベクトルデータレーン１００（０）〜１００（Ｘ）は、この実施形態では、ベクトルデータファイル８２と実行ユニット８４とを含んでいる。例としてベクトルデータレーン１００（０）を取り上げると、その中のベクトルデータファイル８２（０）は、フィルタベクトル処理のために実行ユニット８４（０）によって受信されるように、入力データフローパス８０（０）上に入力ベクトルデータサンプル８６（０）を供給するように構成される。上記で説明されたように、タップ付き遅延線７８は、フィルタベクトル処理のために、入力ベクトルデータサンプル８６（０）をシフトし、シフトされた入力ベクトルデータサンプル８６Ｓ（０）を実行ユニット８４（０）に供給するために、入力データフローパス８０（０）内に設けられる。ベクトルデータファイル８２（０）はまた、ＶＰＥ２２（１）によって処理されるべき現在または次のベクトル命令に従って、必要または所望に応じて、次のベクトル処理動作のためにベクトルデータファイル８２（０）に戻されて記憶されるべき、出力データフローパス９８（０）からのフィルタベクトル処理の結果として、実行ユニット８４（０）によって供給される、結果として生じるフィルタ出力ベクトルデータサンプル９４（０）を受信するように構成される。
【００４２】
[0091]必要に応じて、任意の数のベクトルデータレーン１００（０）〜１００（Ｘ）がＶＰＥ２２（１）内に設けられる場合がある。ＶＰＥ２２（１）内に設けられるベクトルデータレーン１００（０）〜１００（Ｘ）の数は、効率目的のための並列化ベクトル処理対さらなるベクトルデータレーン１００（０）〜１００（Ｘ）を設けることに伴うさらなる回路、空間、および電力消費についてのトレードオフに基づく場合がある。１つの非限定的な例として、１６個のベクトルデータレーン１００がＶＰＥ２２（１）内に設けられる場合があり、各ベクトルデータレーン１００は、ＶＰＥ２２（１）内の５１２ビットまでのベクトルデータの並列化処理を提供するために、３２ビットのデータ幅能力を有する。
【００４３】
[0092]引き続き図４を参照すると、すべてのベクトルデータファイル８２（０）〜８２（Ｘ）に適用可能であるが、例としてベクトルデータレーン１００（０）内のベクトルデータファイル８２（０）を使用して、ベクトルデータファイル８２（０）により、入力ベクトルデータサンプル８６（０）の１つまたは複数のサンプルがベクトル処理のために記憶されることが可能になる。ＶＰＥ２２（１）によって実行されている特定のベクトル命令に従う入力ベクトルデータサンプル８６（０）のプログラミングに応じて、入力ベクトルデータサンプル８６（０）の幅が設けられる。入力データフローパス８０（０）の幅は、所与のベクトル命令がタップ付き遅延線７８および実行ユニット８４（０）に様々な幅の入力ベクトルデータサンプル８６（０）を供給するために、クロックサイクルごとを含むベクトル命令ごとにプログラム可能および再プログラム可能である。このようにして、ベクトルデータレーン１００（０）は、実行されているベクトル命令のタイプに応じて、入力ベクトルデータサンプル８６（０）の様々な幅の処理を提供するように、プログラムおよび再プログラムされ得る。
【００４４】
[0093]たとえば、ベクトルデータファイル８２（０）は、３２ビット幅であり、同様に３２ビットまでの幅である入力ベクトルデータサンプル８６を記憶することが可能であり得る。入力ベクトルデータサンプル８６（０）は、ベクトルデータファイル８２（０）の幅全体（たとえば、３２ビット）を消費する場合があるか、またはベクトルデータファイル８２（０）の幅のより小さいサンプルサイズで供給される場合がある。入力ベクトルデータサンプル８６（０）のサイズは、ＶＰＥ２２（１）によって実行されているベクトル命令に基づく、入力ベクトルデータサンプル８６（０）のサイズ向けの入力データフローパス８０（０）の構成のプログラミングに基づいて構成され得る。たとえば、入力ベクトルデータサンプル８６（０）は、１つのベクトル命令のための２つの別々の１６ビットベクトルデータサンプルを備える場合がある。別の例として、入力ベクトルデータサンプル８６（０）は、１つの３２ビットベクトルデータサンプルとは対照的に、別のベクトル命令のためのベクトルデータファイル８２（０）内の４つの８ビットベクトルデータサンプルを備える場合がある。別の例では、入力ベクトルデータサンプル８６（０）は、１つの３２ビットベクトルデータサンプルを備える場合がある。ＶＰＥ２２（１）はまた、ベクトル命令ごとに、および／または所与のベクトル命令のクロックサイクルごとに、実行ユニット８４（０）によりベクトルデータファイル８２（０）に供給される様々なサイズの、結果として生じるフィルタ出力ベクトルデータサンプル９４（０）を受信するように、ベクトルデータファイル８２（０）のための出力データフローパス９８（０）をプログラムおよび再プログラムすることが可能である。
【００４５】
[0094]図４のＶＰＥ２２（１）のさらなる詳細および特徴、ならびにこの実施形態における入力データフローパス８０（０）〜８０（Ｘ）内の実行ユニット８４（０）〜８４（Ｘ）にシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するためのタップ付き遅延線７８のさらなる説明が次に記載される。この関連で、図５は、例示的なフィルタベクトル命令に従って、タップ付き遅延線７８を利用する図４のＶＰＥ２２（１）において実行され得る例示的なフィルタベクトル処理動作１０２を示すフローチャートである。図６Ａ〜図１０において提供される例を参照して、図５のフィルタベクトル処理動作１０２において実行される例示的なタスクが記載される。
【００４６】
[0095]図５を参照すると、フィルタベクトル命令に従ってフィルタベクトル処理動作１０２において処理されるべき入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、フィルタベクトル処理動作１０２のために、ベクトルデータファイル８２（０）〜８２（Ｘ）から入力データフローパス８０（０）〜８０（Ｘ）の中にフェッチされる（ブロック１０４）。図４のＶＰＥ２２（１）に関して上記で説明されたように、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、実行ユニット８４（０）〜８４（Ｘ）内のグローバルレジスタファイル４０から受信されたフィルタ係数９２（０）〜９２（Ｙ−１）と乗算される。たとえば、図６Ａは、グローバルレジスタファイル４０内のフィルタ係数９２（０）〜９２（Ｙ−１）（すなわち、ｈ７〜ｈ０）を示す。この例では、実行されるべきフィルタベクトル処理動作１０２において８個のフィルタタップを提供する、グローバルレジスタファイル４０に記憶された８個のフィルタ係数９２が存在する。この例では、上記で説明された図３のディスクリートＦＩＲフィルタ６４の式からのフィルタベクトル処理動作１０２は、下記の通りであることに留意されたい。  
ｙ［ｎ］＝ｘ［ｎ］＊ｈ０＋ｘ［ｎ−１］＊ｈ１＋．．．＋ｘ［ｎ−７］＊ｈ７
【００４７】
[0096]図６Ｂは、フィルタベクトル処理動作１０２によってフィルタリングされるべき入力信号を表す、図４のＶＰＥ２２（１）内のベクトルデータファイル８２（０）〜８２（Ｘ）に記憶された例示的な入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を示す。この例では、サンプルＸ０は最も古いサンプルであり、サンプルＸ６３はつい最近のサンプルである。言い換えれば、この例では、サンプルＸ６３は、時間的にサンプルＸ０の後に発生する。ベクトルデータファイル８２（０）〜８２（Ｘ）の各アドレスは１６ビット幅であるので、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶された最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、図６Ｂに示されたように、ＡＤＤＲＥＳＳ０およびＡＤＤＲＥＳＳ１にまたがる。これにより、ベクトルデータファイル８２（０）〜８２（Ｘ）が、図４のＶＰＥ２２（１）の例における実行ユニット８４（０）〜８４（Ｘ）の３２ビット幅能力をサポートするために、３２ビット幅の入力ベクトルデータサンプル８６を供給することが可能になる。この関連で、最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を備える、合計５１２ビットの各々８ビットの幅である６４個の合計入力ベクトルデータサンプルサブセット（すなわち、Ｘ０〜Ｘ６３）が存在する。同様に、ＡＤＤＲＥＳＳ２およびＡＤＤＲＥＳＳ３は、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶された別の２番目の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を記憶する。図６Ｂのこの例では、各ベクトルデータファイル８２（０）〜８２（Ｘ）の８個のアドレス（ＡＤＤＲＥＳＳ０〜７）が示され、２５６個の合計入力ベクトルデータサンプル８６（すなわち、Ｘ０〜Ｘ２５５）を示すが、それは限定的でないことに留意されたい。
【００４８】
[0097]フィルタベクトル処理動作１０２に関与する入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅に応じて、ベクトル命令のプログラミングに従うフィルタベクトル処理動作１０２を提供するために、図４のＶＰＥ２２（１）内のベクトルデータレーン１００（０）〜１００（Ｘ）の１つ、いくつか、またはすべてが利用され得る。ベクトルデータファイル８２（０）〜８２（Ｘ）の幅全体が必要な場合、すべてのベクトルデータレーン１００（０）〜１００（Ｘ）がフィルタベクトル処理動作１０２に利用され得る。フィルタベクトル処理動作１０２は、フィルタベクトル処理動作１０２に利用され得るベクトルデータレーン１００（０）〜１００（Ｘ）のサブセットを必要とするにすぎない場合があることに留意されたい。これは、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅がすべてのベクトルデータファイル８２（０）〜８２（Ｘ）の幅よりも小さいからであり得るし、ここで、フィルタベクトル処理動作１０２と並列に実行されるべき他のベクトル処理動作にさらなるベクトルデータレーン１００を利用することが望ましい。現在の例を説明する目的で、フィルタベクトル処理動作１０２において利用される入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、すべてのベクトルデータレーン１００（０）〜１００（Ｘ）を要すると想定する。
【００４９】
[0098]図５に戻って参照すると、現在の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）としてタップ付き遅延線７８にロードされるために、フェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、ベクトルデータファイル８２（０）〜８２（Ｘ）から入力データフローパス８０（０）〜８０（Ｘ）に供給される（ブロック１０６）。入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、フィルタベクトル処理動作１０２のために実行ユニット８４（０）〜８４（Ｘ）によって処理されるべき入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）として、プライマリタップ付き遅延線７８（０）の中にロードされる。プライマリタップ付き遅延線７８（０）の中にロードされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、フィルタベクトル処理動作１０２の最初のフィルタタップ動作のためにシフトされない。しかしながら、上記で説明され、図７に関して下記でさらに詳細に説明されるように、タップ付き遅延線７８の目的は、フィルタベクトル処理動作１０２の次のフィルタタップ動作のために実行ユニット８４（０）〜８４（Ｘ）にシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するために、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）のシフトを提供することである。実行ユニット８４（０）〜８４（Ｘ）によって実行されるフィルタベクトル処理動作１０２の各処理ステージの間、実行ユニット８４（０）〜８４（Ｘ）にシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するために、入力ベクトルデータサンプル８６がプライマリタップ付き遅延線７８（０）内でシフトされる。このようにして、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、フィルタベクトル処理動作１０２のフィルタタップ動作ごとに、記憶、ベクトルデータファイル８２（０）〜８２（Ｘ）内でシフト、および再フェッチされる必要がない。
【００５０】
[0099]オプションのシャドウタップ付き遅延線７８（１）がＶＰＥ２２（１）内に設けられた場合、次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）も、ベクトルデータファイル８２（０）〜８２（Ｘ）からシャドウタップ付き遅延線７８（１）の中にロードされ得る。図７に関して下記でさらに詳細に説明されるように、次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）は、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）の少なくとも一部になるために、フィルタベクトル処理動作１０２の間にプライマリタップ付き遅延線７８（０）の中にシフトされる。このように、プライマリタップ付き遅延線７８（０）は、フィルタベクトル処理動作１０２のために実行されるべき次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）が、ベクトルデータファイル８２（０）〜８２（Ｘ）からプライマリタップ付き遅延線７８（０）の中にフェッチされるまで、実行ユニット８４（０）〜８４（Ｘ）が待つ必要があった場合、場合によっては被る遅延をフェッチすることなく、フィルタベクトル処理動作１０２の間に利用可能なシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を有することができる。
【００５１】
[00100]この関連で、図７は、図４のＶＰＥ２２（１）内に設けられ得る例示的なタップ付き遅延線７８を示す。この実施形態では、タップ付き遅延線７８は、シャドウタップ付き遅延線７８（１）とプライマリタップ付き遅延線７８（０）とを備える。この例におけるプライマリタップ付き遅延線７８（０）は、入力ベクトルデータサンプル８６の解像度が８ビット長に落ちることを可能にするために、複数の８ビットプライマリパイプラインレジスタ１２０から構成される。実行ユニット８４（０）〜８４（Ｘ）によって処理される最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、下記の図９Ａに関して説明されるように、フィルタベクトル処理動作１０２の最初のフィルタタップのために、この例ではシフトされない。実行ユニット８４（０）〜８４（Ｘ）がフィルタベクトル処理動作１０２のために次のフィルタタップを処理するとき、プライマリタップ付き遅延線７８（０）に記憶された入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の中の入力ベクトルデータサンプル８６は、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）になるために、図７の矢印によって示されたように、プライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）内でシフトされる。このようにして、実行ユニット８４（０）〜８４（Ｘ）は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を記憶およびシフトする必要なしに、ならびにベクトルデータファイル８２（０）〜８２（Ｘ）からシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を再フェッチすることなく、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を受信し、それらのフィルタベクトル処理動作１０２を実行することによって、十分利用される。
【００５２】
[00101]この実施形態では、プライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）はまとめて、図４のベクトルデータファイル８２（０）〜８２（Ｘ）の幅である。１５に等しい「Ｘ」を有する幅が５１２ビットであるベクトルデータファイル８２（０）〜８２（Ｘ）の例では、５１２ビット（すなわち、６４個のレジスタ×各８ビット）の合計幅を提供するために、各々が８ビット幅である６４個の合計プライマリパイプラインレジスタ１２０（０）〜１２０（６３）が存在する。したがって、この例では、プライマリタップ付き遅延線７８（０）は、１つの入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅全体を記憶することが可能である。この例では、８ビット幅のプライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）を設けることによって、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、プライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）において、８ビットフィルタベクトル処理動作のために８ビットのベクトルデータサンプルサイズにシフトダウンされ得る。たとえば、１６ビットまたは３２ビットのサンプルなどのより大きいサイズの入力ベクトルデータサンプル８６のサイズがフィルタベクトル処理動作のために望ましい場合、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、プライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）において、１度に２つのプライマリパイプラインレジスタ１２０によってシフトされ得る。
【００５３】
[00102]引き続き図７を参照すると、シャドウタップ付き遅延線７８（１）もタップ付き遅延線７８内に設けられる。シャドウタップ付き遅延線７８（１）は、次のベクトル処理動作のためにベクトルデータファイル８２（０）〜８２（Ｘ）から次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）をラッチまたは輸送するために利用され得る。フィルタベクトル処理動作１０２のための各フィルタタップが実行ユニット８４（０）〜８４（Ｘ）によって実行されるとき、次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）からの次の入力ベクトルデータサンプル８６Ｎは、シャドウタップ付き遅延線７８（１）からプライマリタップ付き遅延線７８（０）の中にシフトされる。シャドウタップ付き遅延線７８（１）はまた、入力ベクトルデータサンプル８６の解像度が、プライマリタップ付き遅延線７８（０）と同様に８ビット長に落ちることを可能にするために、複数の８ビットシャドウパイプラインレジスタ１２２から構成される。プライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）のように、シャドウタップ付き遅延線７８（１）内に設けられたシャドウパイプラインレジスタ１２２（０）〜１２２（４Ｘ＋３）はまとめて、この例では５１２ビットである、ベクトルデータファイル８２（０）〜８２（Ｘ）の幅である。したがって、シャドウタップ付き遅延線７８（１）のシャドウパイプラインレジスタ１２２（０）〜１２２（４Ｘ＋３）も、１つの入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅全体を記憶することが可能である。したがって、この実施形態では、プライマリタップ付き遅延線７８（０）に含まれるシャドウパイプラインレジスタ１２２（０）〜１２２（４Ｘ＋３）の数は、この例では合計１６である（すなわち、Ｘ＝１５）ベクトルデータレーン１００（０）〜１００（Ｘ）の数の４倍である。したがって、シャドウパイプラインレジスタ１２２の数も、合計５１２ビット（すなわち、６４個のレジスタ×各８ビット）向けにこの例では合計６４である。プライマリタップ付き遅延線７８（０）に関して上記で説明されたように、この例では、８ビット幅のシャドウパイプラインレジスタ１２２（０）〜１２２（４Ｘ＋３）を設けることによって、次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）は、８ビットフィルタベクトル処理動作のために８ビットのベクトルデータサンプルサイズにシフトダウンされ得る。
【００５４】
[00103]図８は、図７のプライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）の中に存在する選択されたプライマリパイプラインレジスタ１２０とシャドウパイプラインレジスタ１２２とを示す概略図である。図８は、プライマリパイプラインレジスタ１２０とシャドウパイプラインレジスタ１２２との間の入力ベクトルデータサンプル８６のシフトの例を説明することを容易にするために提供される。上記で説明されたように、入力ベクトルデータサンプル８６はまた、プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）内で、ならびにシャドウタップ付き遅延線７８（１）からプライマリタップ付き遅延線７８（０）にシフトされ得る。パイプラインレジスタ１２０、１２２は、入力ベクトルデータサンプル８６が必要な場合８ビットの解像度でシフトすることを可能にするために、この例では各々８ビット幅である。これは下記でより詳細に説明される。プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）はまた、同様に下記でより詳細に説明されるように、入力ベクトルデータサンプル８６の解像度の１６ビットシフトと３２ビットシフトとを実行することが可能である。
【００５５】
[00104]この関連で、図８は、図７のプライマリタップ付き遅延線７８（０）内に入力ベクトルデータサンプル８６Ｓ（Ｘ）のための記憶レジスタを形成する、プライマリパイプラインレジスタ１２０（４Ｘ＋３）、１２０（２Ｘ＋１）、１２０（４Ｘ＋２）、および１２０（２Ｘ）の中への入力ベクトルデータサンプル８６のシフトを示す。プライマリパイプラインレジスタ１２０（４Ｘ＋３）および１２０（４Ｘ＋２）は、それぞれ、図７のプライマリタップ付き遅延線７８（０）内のレジスタＢ31およびＢ30である。プライマリパイプラインレジスタ１２０（２Ｘ+１）および１２０（２Ｘ）は、それぞれ、図７のプライマリタップ付き遅延線７８（０）内のレジスタＡ31およびＡ30である。図７に示されたように、レジスタＢ31およびＢ30のためのプライマリパイプラインレジスタ１２０（４Ｘ＋３）および１２０（４Ｘ＋２）は、シャドウタップ付き遅延線７８（１）内の隣接するシャドウパイプラインレジスタ１２２からシフトされた入力ベクトルデータサンプル８６を受信するように構成される。したがって、図８の例では、それぞれ、レジスタＡ’0およびＡ’1のためのシャドウパイプラインレジスタ１２２（０）および１２２（１）は、Ｂ31およびＢ30のためのプライマリパイプラインレジスタ１２０（４Ｘ＋３）および１２０（４Ｘ＋２）の中に入力ベクトルデータサンプル８６をシフトするように構成されるものとして示される。同様に、図８の例では、プライマリタップ付き遅延線７８（０）内の、それぞれ、レジスタＢ1およびＢ0のためのプライマリパイプラインレジスタ１２０（２Ｘ＋３）および１２０（２Ｘ＋２）は、レジスタＡ31およびＡ30のための隣接するプライマリパイプラインレジスタ１２０（２Ｘ+１）および１２０（２Ｘ）の中に入力ベクトルデータサンプル８６をシフトするように構成されるものとして示される。これらのレジスタ間の入力ベクトルデータサンプル８６の例示的なシフトが次に記載される。
【００５６】
[00105]引き続き図８を参照すると、図４ならびに入力ベクトルデータサンプル８６のシフトにおいて、ベクトルデータファイル８２（０）〜８２（Ｘ）から新しい入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）をロードするように、プライマリパイプラインレジスタ１２０とシャドウパイプラインレジスタ１２２とを構成する柔軟性を提供するために、入力ベクトルデータサンプル選択器がプライマリパイプラインレジスタ１２０およびシャドウパイプラインレジスタ１２２の各々に関連付けられる。この関連で、プライマリタップ付き遅延線７８（０）において、それぞれ、プライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）の中にロードまたはシフトされるベクトルデータに、入力ベクトルデータサンプル選択器１２４（０）〜１２４（４Ｘ＋３）が提供される。シャドウタップ付き遅延線７８（１）において、それぞれ、シャドウパイプラインレジスタ１２２（０）〜１２２（４Ｘ＋３）の中にロードまたはシフトされるベクトルデータに、入力ベクトルデータサンプル選択器１２６（０）〜１２６（４Ｘ＋３）が提供される。入力ベクトルデータサンプル選択器１２４（０）〜１２４（４Ｘ＋３）および入力ベクトルデータサンプル選択器１２６（０）〜１２６（４Ｘ＋３）は、この例では各々マルチプレクサである。下記でより詳細に説明されるように、入力ベクトルデータサンプル選択器１２４（０）〜１２４（４Ｘ＋３）、１２６（０）〜１２６（４Ｘ＋３）は、各々、プライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）およびシャドウパイプラインレジスタ１２２（０）〜１２２（４Ｘ＋３）の中にロードまたはシフトされるべき入力ベクトルデータを選択するために、データ幅シフト制御入力１２５によって制御され得る。
【００５７】
[00106]図８では、それぞれ、レジスタＢ31、Ｂ30、Ａ31、およびＡ30に対応する、それぞれ、プライマリパイプラインレジスタ１２０（４Ｘ＋３）、１２０（４Ｘ＋２）、１２０（２Ｘ＋１）、１２０（２Ｘ）のために、入力ベクトルデータサンプル選択器１２４（４Ｘ＋３）、１２４（４Ｘ＋２）、１２４（２Ｘ＋１）、１２４（２Ｘ）のみが示されていることに留意されたい。図８では、それぞれ、レジスタＡ’1、Ａ’0、Ｂ1、およびＢ0に対応する、それぞれ、パイプラインレジスタ１２２（１）、１２２（０）、１２０（２Ｘ＋３）、１２０（２Ｘ＋２）のために、入力ベクトルデータサンプル選択器１２６（１）、１２６（０）、１２４（２Ｘ＋３）、１２４（２Ｘ＋２）のみが示されている。
【００５８】
[00107]引き続き図８を参照すると、ベクトル処理動作のために、新しい入力ベクトルデータがプライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）の中にロードされるべき場合、データ幅シフト制御入力１２５は、入力ベクトルデータサンプル選択器１２４（４Ｘ＋３）、１２４（４Ｘ＋２）、１２４（２Ｘ＋１）、１２４（２Ｘ）に、ロードデータフローパス１３３（４Ｘ＋３）、１３３（４Ｘ＋２）、１３３（２Ｘ＋１）、１３３（２Ｘ）を選択させるように、図４のＶＰＥ２２（１）によって構成され得る。ロードデータフローパス１３３（４Ｘ＋３）、１３３（４Ｘ＋２）、１３３（２Ｘ＋１）、１３３（２Ｘ）を選択すると、ベクトルデータファイル８２（０）〜８２（Ｘ）からの入力ベクトルデータがプライマリパイプラインレジスタ１２０（４Ｘ＋３）、１２０（４Ｘ＋２）、１２０（２Ｘ＋１）、１２０（２Ｘ）に記憶されることが可能になる。ベクトルデータファイル８２（０）〜８２（Ｘ）から入力ベクトルデータをロードすることは、例としてＶＰＥ２２（１）によって処理されるべき新しいまたは次のベクトル命令上で実行される場合がある。同様に、データ幅シフト制御入力１２５はまた、入力ベクトルデータサンプル選択器１２６（１）、１２４（２Ｘ＋３）、１２６（０）、１２４（２Ｘ＋２）に、入力データフローパス１３５（１）、１３３（２Ｘ＋３）、１３５（０）、１３３（２Ｘ＋２）を選択させるように、図４のＶＰＥ２２（１）によって構成され得る。ロードデータフローパス１３５（１）、１３３（２Ｘ＋３）、１３５（０）、１３３（２Ｘ＋２）を選択すると、ベクトルデータファイル８２（０）〜８２（Ｘ）からの入力ベクトルデータがパイプラインレジスタ１２２（１）、１２０（２Ｘ＋３）、１２４（０）、１２０（２Ｘ＋２）に記憶されることが可能になる。
【００５９】
[00108]引き続き図８を参照すると、ベクトル処理動作のために、プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）に記憶されたベクトルデータがシフトされる必要がある場合、データ幅シフト制御入力１２５は、入力ベクトルデータサンプル選択器１２４（４Ｘ＋３）、１２４（４Ｘ＋２）、１２４（２Ｘ＋１）、１２４（２Ｘ）に、ベクトルデータサンプルのシフトのための入力データフローパス１３７（４Ｘ＋３）、１３７（４Ｘ＋２）、１３７（２Ｘ＋１）、１３７（２Ｘ）を選択させるように、図４のＶＰＥ２２（１）によって構成され得る。データ幅シフト制御入力１２５はまた、入力ベクトルデータサンプル選択器１２６（１）、１２４（２Ｘ＋３）、１２６（０）、１２４（２Ｘ＋２）に、ベクトルデータサンプルのシフトのための入力データフローパス１３９（１）、１３７（２Ｘ＋３）、１３９（０）、１３７（２Ｘ＋２）を選択させる。そこに示されているように、入力ベクトルデータサンプル選択器１２４（４Ｘ＋３）、１２４（４Ｘ＋２）、１２４（２Ｘ＋１）、１２４（２Ｘ）および入力ベクトルデータサンプル選択器１２６（１）、１２４（２Ｘ＋３）、１２６（０）、１２４（２Ｘ＋２）は、各々、ベクトルデータが他のレジスタにシフトされることを可能にする、それぞれ、出力データフローパス１４１（４Ｘ＋３）、１４１（４Ｘ＋２）、１４１（２Ｘ＋１）、１４１（２Ｘ）および１４３（１）、１４１（２Ｘ＋３）、１４３（０）、１２４（２Ｘ＋２）を含む。図８に示された出力データフローパスは、次に全体が示される出力データフローパス１４１（０）〜１４１（４Ｘ＋３）および１４３（０）〜１４３（４Ｘ＋３）の一部であるが、それぞれ、プライマリタップ付き遅延線７８（０）内の入力ベクトルデータサンプル選択器１２４（０）〜１２４（４Ｘ＋３）およびシャドウタップ付き遅延線７８（１）内の入力ベクトルデータサンプル選択器１２６（０）〜１２６（４Ｘ＋３）のために含まれる。
【００６０】
[00109]例として、８ビットベクトルデータのシフト中、入力ベクトルデータサンプル選択器１２４（４Ｘ＋３）、１２４（４Ｘ＋２）、１２４（２Ｘ＋１）、１２４（２Ｘ）および入力ベクトルデータサンプル選択器１２６（１）、１２４（２Ｘ＋３）、１２６（０）、１２４（２Ｘ＋２）は、それぞれ、入力データフローパス１３７（４Ｘ＋３）、１３７（４Ｘ＋２）、１３７（２Ｘ＋１）、１３７（２Ｘ）、１３９（１）、１３７（２Ｘ＋３）、１３９（０）、１３７（２Ｘ＋２）を選択するように構成される。この関連で、例として、プライマリパイプラインレジスタ１２０（２Ｘ＋１）（すなわち、Ａ31）内のベクトルデータは、図８に示されたように、プライマリパイプラインレジスタ１２０（２Ｘ）（すなわち、Ａ30）に出力データフローパス１４１（２Ｘ＋１）上でシフトされる。プライマリパイプラインレジスタ１２０（４Ｘ＋３）（すなわち、Ｂ31）内のベクトルデータは、図８に示されたように、プライマリパイプラインレジスタ１２０（４Ｘ＋２）（すなわち、Ｂ30）に出力データフローパス１４１（４Ｘ＋３）上でシフトされる。シャドウパイプラインレジスタ１２２（０）（すなわち、Ａ’0）内のベクトルデータは、図８に示されたように、プライマリパイプラインレジスタ１２０（４Ｘ＋３）（すなわち、Ｂ31）に出力データフローパス１４３（０）上でシフトされる。プライマリパイプラインレジスタ１２０（２Ｘ＋３）（すなわち、Ｂ1）内のベクトルデータは、図８に示されたように、プライマリパイプラインレジスタ１２０（４Ｘ＋２）（すなわち、Ｂ30）に出力データフローパス１４１（２Ｘ＋３）上でシフトされる。シャドウパイプラインレジスタ１２２（１）（すなわち、Ａ’1）内のベクトルデータは、図８に示されたように、シャドウパイプラインレジスタ１２２（０）（すなわち、Ａ’0）に出力データフローパス１４３（１）上でシフトされる。プライマリパイプラインレジスタ１２０（２Ｘ＋２）（すなわち、Ｂ0）内のベクトルデータは、図８に示されたように、プライマリパイプラインレジスタ１２０（２Ｘ＋１）（すなわち、Ａ31）に出力データフローパス１４１（２Ｘ＋２）上でシフトされる。
【００６１】
[00110]引き続き図８を参照すると、１６ビットベクトルデータのシフト中、入力ベクトルデータサンプル選択器１２４（４Ｘ＋３）、１２４（４Ｘ＋２）、１２４（２Ｘ＋１）、１２４（２Ｘ）および入力ベクトルデータサンプル選択器１２６（１）、１２４（２Ｘ＋３）、１２６（０）、１２４（２Ｘ＋２）は、それぞれ、入力データフローパス１４５（４Ｘ＋３）、１４５（４Ｘ＋２）、１４５（２Ｘ＋１）、１４５（２Ｘ）、１４７（１）、１４５（２Ｘ＋３）、１４７（０）、１４５（２Ｘ＋２）を選択するように構成される。この関連で、例として、プライマリパイプラインレジスタ１２０（２Ｘ＋２）（すなわち、Ｂ0）内のベクトルデータは、図８に示されたように、プライマリパイプラインレジスタ１２０（２Ｘ）（すなわち、Ａ30）に出力データフローパス１４１（２Ｘ＋２）上でシフトされる。シャドウパイプラインレジスタ１２２（０）（すなわち、Ａ’0）内のベクトルデータは、図８に示されたように、プライマリパイプラインレジスタ１２０（４Ｘ＋２）（すなわち、Ｂ30）に出力データフローパス１４３（０）上でシフトされる。プライマリパイプラインレジスタ１２０（２Ｘ＋３）（すなわち、Ｂ1）内のベクトルデータは、図８に示されたように、プライマリパイプラインレジスタ１２０（２Ｘ＋１）（すなわち、Ａ31）に出力データフローパス１４１（２Ｘ＋３）上でシフトされる。シャドウパイプラインレジスタ１２２（１）（すなわち、Ａ’1）内のベクトルデータは、図８に示されたように、プライマリパイプラインレジスタ１２０（４Ｘ＋３）（すなわち、Ｂ31）に出力データフローパス１４３（１）上でシフトされる。
【００６２】
[00111]プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）において３２ビットベクトルデータのシフトが望ましい場合、プライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）およびシャドウパイプラインレジスタ１２２（０）〜１２２（４Ｘ＋３）に記憶されたベクトルデータは、必要な場合、２つの１６ビットベクトルデータのシフト動作においてシフトされ得る。
【００６３】
[00112]図７では、レジスタＢ31およびＢ30のためのプライマリパイプラインレジスタ１２０（４Ｘ＋３）および１２０（４Ｘ＋２）、ならびにレジスタＡ31およびＡ30のためのプライマリパイプラインレジスタ１２０（２Ｘ＋１）および１２０（２Ｘ）は、シフトされた入力ベクトルデータサンプル８６Ｓ（Ｘ）に対して互いに論理的に関連付けられるが、図８に示されたように、互いに物理的に隣接していないことに留意されたい。この配置は、図６Ｂに示されたように、ベクトルデータファイル８２（０）〜８２（Ｘ）内の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の記憶パターンに起因して、この例において提供される。同様に図６Ｂに示されたように、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶された入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、ＡＤＤＲＥＳＳ０およびＡＤＤＲＥＳＳ１をまたぐ。しかしながら、本明細書内の開示は、ベクトルデータファイル８２（０）〜８２（Ｘ）内の入力ベクトルサンプルセット８６（０）〜８６（Ｘ）のこの記憶パターンに限定されないことに留意されたい。
【００６４】
[00113]さらに、図８に関して、タップ付き遅延線７８（０）、７８（１）は、実行されるべきベクトル命令に従って、タップ付き遅延線７８（０）、７８（１）のためのプログラム可能な入力データパス構成に基づいて、ベクトルデータファイル８２（０）〜８２（Ｘ）と実行ユニット８４（０）〜８４（Ｘ）との間の入力データフローパス８０（０）〜８０（Ｘ）内に、選択的に設けられるか、または設けられないように構成可能である。たとえば、ベクトル命令がフィルタベクトル処理命令ではなく、および／または場合によっては入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）をシフトするためにタップ付き遅延線７８（０）、７８（１）を必要としない場合、タップ付き遅延線７８（０）、７８（１）は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）をラッチしないように構成され得る。入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、プライマリタップ付き遅延線７８（０）とシャドウタップ付き遅延線７８（１）とをバイパスすることによって、それぞれの実行ユニット８４（０）〜８４（Ｘ）にベクトルデータファイル８２（０）〜８２（Ｘ）から供給され得る。このプログラム可能なデータパス構成により、さらに、プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）が入力データフローパス８０（０）〜８０（Ｘ）内に設けられるか、または設けられないことが可能になる。プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）は、必要に応じて、ベクトル命令ごとに、入力データフローパス８０（０）〜８０（Ｘ）内に設けられるか、または設けられないようにプログラムされ得る。
【００６５】
[00114]図９Ａは、フィルタベクトル処理命令の第１のクロックサイクル（ＣＹＣＬＥ０）の間にプライマリタップ付き遅延線７８（０）の中にベクトルデータファイル８２（０）〜８２（Ｘ）からロードされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を示す。プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）は、図７から簡略化された形式で示されている。グローバルレジスタファイル４０も示されている。最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が入力ベクトルデータサンプルＸ０〜Ｘ６３としてプライマリタップ付き遅延線７８（０）の中にロードされる。たとえば、プライマリタップ付き遅延線７８（０）の中に（および下記でより詳細に説明されるように、シャドウタップ付き遅延線７８（１）の中にも）最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）をロードするために、特殊ベクトル命令がサポートされる場合がある。この最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、図６Ｂに示されたように、ベクトルデータファイル８２（０）〜８２（Ｘ）内のＡＤＤＲＥＳＳ０およびＡＤＤＲＥＳＳ１に記憶された。ひとえにこの例のための図４のＶＰＥ２２（１）内のベクトルデータファイル８２（０）〜８２（Ｘ）の記憶パターンのせいで、この例では、Ｘ０、Ｘ１、Ｘ３２、およびＸ３３が最初の入力ベクトルデータサンプル８６（０）を形成することに留意されたい。他の入力ベクトルデータサンプル８６は、同様に、図９Ａに示されたように形成される（たとえば、８６（１）、８６（２）、．．．８６（Ｘ））。入力ベクトルデータサンプル８６を一緒にグループ化して、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を形成するために、他のパターンが提供される可能性がある。
【００６６】
[00115]図９Ｂは、フィルタベクトル処理命令の第２のクロックサイクル（ＣＹＣＬＥ１）の間にシャドウタップ付き遅延線７８（１）の中にロードされた次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）を示す。フィルタ処理動作の実行をセットアップするために、ベクトルデータファイル８２（０）〜８２（Ｘ）からの最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）がプライマリタップ付き遅延線７８（０）の中にロードされた後に、次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）がシャドウタップ付き遅延線７８（１）の中にロードされる。この次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）は、入力ベクトルデータサンプルＸ６４〜Ｘ１２７としてシャドウタップ付き遅延線７８（１）の中にロードされる。この次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）は、図６Ｂに示されたように、ベクトルデータファイル８２（０）〜８２（Ｘ）内のＡＤＤＲＥＳＳ２およびＡＤＤＲＥＳＳ３に記憶された。ひとえにこの例のための図４のＶＰＥ２２（１）内のベクトルデータファイル８２（０）〜８２（Ｘ）の記憶パターンのせいで、この例では、Ｘ６４、Ｘ６５、Ｘ９６、およびＸ９７が最初の入力ベクトルデータサンプル８６（０）を形成することに留意されたい。入力ベクトルデータサンプル８６を一緒にグループ化して、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を形成するために、他のパターンが提供される可能性がある。グローバルレジスタファイル４０からの最初のフィルタ係数９２（０）も、フィルタベクトル処理動作１０２において使用するために図９Ｂの実行ユニット８４（０）〜８４（Ｘ）へのレジスタ（「Ｃ」）内に設けられるものとして示される。
【００６７】
[00116]図７に戻って参照すると、フィルタベクトル処理動作１０２の各処理ステージの間に入力ベクトルデータサンプル８６がプライマリタップ付き遅延線７８（０）内でシフトされるとき、シャドウパイプラインレジスタ１２２に記憶された次の入力ベクトルデータサンプル８６Ｎも、シャドウタップ付き遅延線７８（１）のシャドウパイプラインレジスタ１２２内でシフトされる。図７の最初のシャドウパイプラインレジスタ１２２（０）に記憶された入力ベクトルデータサンプル８６は、各シフトの間にプライマリタップ付き遅延線７８（０）の最後のプライマリパイプラインレジスタ１２０（４Ｘ＋３）の中にシフトされる。したがって、このようにして、フィルタベクトル処理動作１０２の処理ステージが実行ユニット８４（０）〜８４（Ｘ）において進行するとき、シャドウタップ付き遅延線７８（１）に最初に記憶された次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）の少なくとも一部分は、処理のために実行ユニット８４（０）〜８４（Ｘ）に供給されるために、プライマリタップ付き遅延線７８（０）の中にシフトされる。シフトの回数は、この例ではフィルタベクトル処理動作１０２において提供されたフィルタタップの数に依存する。ベクトルデータファイル８２（０）〜８２（Ｘ）からプライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）の中にフェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内の入力ベクトルデータサンプル８６の数が、フィルタベクトル処理動作１０２におけるフィルタタップの数よりも大きい場合、実行ユニット８４（０）〜８４（Ｘ）は、任意のさらなる入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）がベクトルデータファイル８２（０）〜８２（Ｘ）から再フェッチされることなく、フィルタベクトル処理動作１０２を実行することができる。しかしながら、フィルタベクトル処理動作１０２におけるフィルタタップの数が、ベクトルデータファイル８２（０）〜８２（Ｘ）からプライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）の中にフェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内の入力ベクトルデータサンプル８６よりも大きい場合、フィルタベクトル処理動作１０２の一部として、さらなる入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）がベクトルデータファイル８２（０）〜８２（Ｘ）からフェッチされ得る。フィルタベクトル処理動作１０２がシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）に対して完了した後、タップ付き遅延線７８（０）、７８（１）内に未処理の入力ベクトルデータサンプル８６Ｓが存在する場合、実行ユニット８４（０）〜８４（Ｘ）は、次いで、次のフィルタベクトル処理動作のためのシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）として、プライマリタップ付き遅延線７８（０）に記憶された前の次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）を供給され得る。
【００６８】
[00117]シャドウタップ付き遅延線７８（１）を提供するための別の例示的な論理的根拠は以下の通りである。現在のフィルタベクトル処理動作１０２が、ベクトルデータレーン１００（０）〜１００（Ｘ）の幅で提供され得るよりも多くの入力ベクトルデータサンプル８６を要する場合、シャドウタップ付き遅延線７８（１）の中にロードされたさらなる入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、遅延がないフィルタベクトル処理動作１０２の間、実行ユニット８４（０）〜８４（Ｘ）に利用可能である。フィルタベクトル処理動作１０２が、実行中シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を通じて進行するとき、上記で説明されたように、シャドウタップ付き遅延線７８（１）の中にロードされたさらなる次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）が、プライマリタップ付き遅延線７８（０）の中にシフトされる。したがって、このようにして、実行ユニット８４（０）〜８４（Ｘ）によるベクトル処理において使用するための次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）は、遅延なく利用可能である。ベクトルデータファイル８２（０）〜８２（Ｘ）の幅の単一のフェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、フィルタベクトル処理動作１０２全体を実行するのに十分であるかどうかにかかわらず、実行ユニット８４（０）〜８４（Ｘ）は、フィルタベクトル処理動作１０２の間、十分に利用され続けることができる。
【００６９】
[00118]最初の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）および次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）が、それぞれ、プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）の中にロードされた後、プライマリタップ付き遅延線７８（０）に供給された最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、フィルタベクトル処理動作１０２の最初の処理ステージにおいて処理されるために、それぞれの実行ユニット８４（０）〜８４（Ｘ）に供給される（図５のブロック１０８）。最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が実行ユニット８４（０）〜８４（Ｘ）によって処理された後、最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、実行ユニット８４（０）〜８４（Ｘ）によって処理されるべきシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）になるために、プライマリタップ付き遅延線７８（０）内でシフトされる。図４のＶＰＥ２２（１）において示されたように、シフトされた入力ベクトルデータサンプル８６Ｓ（０）は実行ユニット８４（０）に供給され、シフトされた入力ベクトルデータサンプル８６Ｓ（１）は実行ユニット８４（１）に供給され、以下同様である。
【００７０】
[00119]次に、実行ユニット８４（０）〜８４（Ｘ）は、フィルタベクトル処理動作１０２を実行する（図５のブロック１１０）。より詳細には、実行ユニット８４（０）〜８４（Ｘ）は、この例では演算：ｙ［ｎ］＝ｘ［ｎ−７］＊ｈ７に従って、第１の繰返しにおいて最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を現在のフィルタ係数９２（０）と乗算し、ここで、ｘ［ｎ−７］は、結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）を供給する最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）である。フィルタベクトル処理動作１０２の次の繰返し（図５のブロック１１０）において、フィルタベクトル処理動作１０２のための次のシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）は、現在のフィルタ係数９２（１）〜９２（Ｙ−１）と乗算される。実行ユニット８４（０）〜８４（Ｘ）は、新しい前の、結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）を供給するために、結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）を、実行ユニット８４（０）〜８４（Ｘ）によって計算された前の、結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）と累算する（図５のブロック１１２）。フィルタベクトル処理動作１０２の最初の処理ステージでは、前の、結果として生じるフィルタ出力ベクトルデータサンプルセットは存在しない。
【００７１】
[00120]フィルタベクトル処理動作１０２のすべての処理ステージが完了した場合（図５のブロック１１４）、ベクトルデータファイル８２（０）〜８２（Ｘ）に供給され記憶されるために、出力データフローパス９８（０）〜９８（Ｘ）内の、結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）として、累算された前の、結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）が供給される（図５のブロック１１６）。フィルタベクトル処理動作１０２のすべての処理ステージが完了していない場合（図５のブロック１１４）、フィルタベクトル処理動作１０２に次のシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するために、タップ付き遅延線７８（０）および７８（１）に記憶されたサンプルがタップ付き遅延線７８（０）、７８（１）内でシフトされる（図５のブロック１１８）。シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）は、フィルタベクトル処理動作１０２が完了するまで、前の、結果として生じるフィルタ出力ベクトルデータサンプルセットと累算されるために、中間結果として次の、結果として生じるフィルタ出力ベクトルデータサンプルセットを計算するために供給される。タップ付き遅延線７８（０）、７８（１）内にシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するために入力ベクトルデータサンプル８６をシフトすることは、図７に関して詳細に上記で前述された。フィルタベクトル処理動作１０２に実行ユニット８４（０）〜８４（Ｘ）によって供給された中間結果の最終的な累算は、図４に示されたように、実行ユニット８４（０）〜８４（Ｘ）から、結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）として供給される。
【００７２】
[00121]図９Ｃは、次のフィルタ処理動作ｙ［ｎ］＝ｘ［ｎ−６］＊ｈ６のための次のシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）になるために、フィルタベクトル処理動作１０２の２番目の処理ステージにおいて、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）がシフトされたときのタップ付き遅延線７８のコンテンツを示す。プライマリタップ付き遅延線７８（０）内のシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）は、実行されているベクトル命令によって規定された入力ベクトルデータサンプルのシフト幅に従って、プライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）内でシフトされる。たとえば、図９Ｃに示されたように、サンプルＸ２はシフトされた入力ベクトルデータサンプル８６Ｓ（０）内でシフトされる。新しいシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）は、フィルタベクトル処理動作１０２の次のフィルタタップのための実行のために、実行ユニット８４（０）〜８４（Ｘ）に供給される。実行ユニット８４（０）〜８４（Ｘ）に供給されたフィルタ係数９２は、この例では「ｈ６」である次のフィルタ係数９２でもある。
【００７３】
[00122]引き続き図５を参照すると、次のフィルタ係数９２と乗算される（図５のブロック１１０）ために、実行ユニット８４（０）〜８４（Ｘ）にプライマリタップ付き遅延線７８（０）からシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給する（図５のブロック１０８）ことによって、プロセスは繰り返す。結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）が前の、結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）と累算される（図５のブロック１１２）。図９Ｄは、例示的なフィルタベクトル処理動作１０２の最後の処理ステージの間、タップ付き遅延線７８（０）、７８（１）内に存在する入力ベクトルデータサンプル８６の状態を示す。図９Ｄに示されたこの例では、フィルタ係数９２「ｈ７」〜「ｈ０」（すなわち、９２（０）〜９２（Ｙ−１））のせいで、フィルタベクトル処理動作１０２において８個のフィルタタップ（Ｙ）が存在した。図９Ｄに示されたように、「ｈ０」はフィルタベクトル処理動作１０２における最後のフィルタ係数９２である。シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）は（フィルタタップの数よりも１回少ない）７回シフトされており、その結果、フィルタベクトル処理動作１０２のための最後の８番目の処理ステージにおいて、入力ベクトルデータサンプルＸ３９がプライマリタップ付き遅延線７８（０）内のシフトされた入力ベクトルデータサンプル８６Ｓ（０）に記憶される。
【００７４】
[00123]上述されたフィルタベクトル処理動作１０２の例は、フィルタベクトル処理動作１０２を提供するためにＶＰＥ２２（１）内のベクトルデータレーン１００（０）〜１００（Ｘ）の各々を利用するが、それは必要でないことに留意されたい。フィルタベクトル処理動作１０２は、フィルタベクトル処理動作１０２に利用されるべきベクトルデータレーン１００（０）〜１００（Ｘ）のサブセットを必要とするにすぎない場合がある。たとえば、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅がすべてのベクトルデータファイル８２（０）〜８２（Ｘ）の幅よりも小さい場合があり、ここで、フィルタベクトル処理動作１０２と並列に実行されるべき他のベクトル処理動作にさらなるベクトルデータレーン１００を利用することが望ましい。このシナリオでは、図７のタップ付き遅延線７８（０）、７８（１）は、最後のベクトルデータレーン１００（Ｘ）に到達するより前に、ベクトルデータレーン１００内のシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）として、シャドウタップ付き遅延線７８（１）からプライマリタップ付き遅延線７８（０）に次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）をシフトするように、修正される必要があり得る。
【００７５】
[00124]図１０は、上記の例における例示的な８個のタップフィルタベクトル処理ステージが、ｙ［ｎ］＝ｘ［ｎ］＊ｈ０＋ｘ［ｎ−１］＊ｈ１＋．．．＋ｘ［ｎ−７］＊ｈ７に従って完全に実行された後の、図４のＶＰＥ２２（１）内の実行ユニット８４（０）〜８４（Ｘ）内の累算器のコンテンツ（すなわち、結果として生じるフィルタ出力ベクトルデータサンプル９４）の概略図である。この例では、各実行ユニット８４（０）〜８４（Ｘ）は、ベクトルデータレーン１００（０）〜１００（Ｘ）ごとに並列に配置された４つの累算器を有するので、累算器Ａｃｃ０〜Ａｃｃ３が図１０に示されている。累算された、結果として生じる出力ベクトルデータサンプルは、さらなる分析および／または処理のためにそこに記憶されるべき全体の、結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）として、ベクトルデータファイル８２（０）〜８２（Ｘ）に出力データフローパス９８（０）〜９８（Ｘ）上で供給され得る。必要な場合、ベクトルデータファイル８２（０）〜８２（Ｘ）から図２のベクトルユニットデータメモリ３２に、結果として生じるフィルタ出力ベクトルデータサンプルセット９４（０）〜９４（Ｘ）の行を移動するために、特殊なベクトル命令がＶＰＥ２２（１）によってサポートされる場合がある。
【００７６】
[00125]フィルタベクトル処理動作１０２以外の他のタイプのベクトル処理動作も、上記で説明された図４のＶＰＥ２２（１）内に設けられたタップ付き遅延線７８と同じまたは同様のタップ付き遅延線７８の使用による、ＶＰＥにおける処理効率を享受することができる。たとえば、ＶＰＥにおける入力ベクトルデータサンプルセット８６のシフトを伴う別の特殊なベクトル処理動作は、（本明細書では「相関ベクトル処理動作」と呼ばれる）相関／共分散ベクトル処理動作である。例として、ＣＤＭＡシステムにおいてユーザ信号と他のユーザの信号との間の良好な分離を提供するために、ＣＤＭＡシステムにおいてユーザ信号を復調するための直接スペクトル拡散コード（ＤＳＳＣ）（すなわち、チップシーケンス）を選ぶために相関演算を提供するようにベクトル処理を利用することが望ましい場合がある。信号の分離は、受信された信号を所望のユーザのローカルに生成されたチップシーケンスと相関させることによって行われる。信号が所望のユーザのチップシーケンスと一致する場合、相関関数は高くなり、ＣＤＭＡシステムはその信号を抽出することができる。所望のユーザのチップシーケンスが信号と共通する部分を少ししか、またはまったく有していない場合、相関は可能な限りゼロに近い（したがって信号を除去する）はずであり、これは相互相関と呼ばれる。チップシーケンスがゼロ以外の任意の時間オフセットで信号と相関される場合、相関は可能な限りゼロに近いはずである。これは自己相関と呼ばれ、マルチパス干渉を拒絶するために使用される。
【００７７】
[00126]しかしながら、相関演算は、ベクトルプロセッサにおいて提供される特殊なデータフローパスに起因して、ベクトルプロセッサにおいて並列化することは困難であり得る。相関されるべき信号を表す入力ベクトルデータサンプルセットが遅延タップ間でシフトされると、入力ベクトルデータサンプルセットはベクトルデータファイルから再フェッチされ、したがって電力消費が増大し、スループットが低減される。メモリからの入力ベクトルデータサンプルセットの再フェッチを最小化するために、データフローパスは、効率的な並列化処理のために、遅延タップと同じ数の乗算器を設けるように構成される可能性がある。しかしながら、他のベクトル処理動作は、より少ない乗算器しか必要としない場合があり、それにより、データフローパス内の乗算器の非効率的なスケーリングおよび過少利用がもたらされる。スケーラビリティを提供するために、乗算器の数が遅延タップの数よりも少なくなるように削減された場合、相関処理の様々なフェーズに対して同じ入力ベクトルデータサンプルセットを取得するために、メモリにより多くの再フェッチが必要とされることによって、並列化が制限される。
【００７８】
[00127]この関連で、図１１は、図２のＶＰＥ２２として提供され得る別の例示的なＶＰＥ２２（２）の概略図である。下記でより詳細に記載されるように、図１１のＶＰＥ２２（２）は、ベクトルデータサンプルの再フェッチが除去または低減され、電力消費が低減される、ＶＰＥ２２（２）内の精度相関ベクトル処理動作を提供するように構成される。精度相関ベクトル処理動作は、ベクトルデータサンプルの再フェッチを必要とし、それにより結果として電力消費が増大する、中間結果の記憶を必要とする相関ベクトル処理動作と比較して、ＶＰＥ２２（２）において提供され得る。ベクトルデータファイルからの入力ベクトルデータサンプルの再フェッチを除去または最小化して、電力消費を低減し、処理効率を改善するために、図４のＶＰＥ２２（１）に含まれるタップ付き遅延線７８も、ＶＰＥ２２（２）内のベクトルデータファイル８２（０）〜８２（Ｘ）と（「ＥＵ」とも標記される）実行ユニット８４（０）〜８４（Ｘ）との間の入力データフローパス８０（０）〜８０（Ｘ）に含まれる。「Ｘ」＋１は、この例におけるベクトルデータサンプルの処理用にＶＰＥ２２（２）内に設けられる並列入力データレーンの最大数である。上記で前に説明されたように、タップ付き遅延線７８は、ベクトルデータファイル８２（０）〜８２（Ｘ）の対応するサブセットまたはすべてから入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の入力ベクトルデータサンプル８６のサブセットまたはすべてとして、タップ付き遅延線入力８８（０）〜８８（Ｘ）上で入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を受信するように構成される。すべての入力ベクトルデータサンプル８６は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を備える。下記でより詳細に説明されるように、ベクトルデータファイル８２（０）〜８２（Ｘ）からの入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）を供給するために、基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）とＶＰＥ２２（２）において相関される。基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）は、この例では１３０（０）、１３０（１）、．．．、および１３０（Ｘ）である、「Ｘ＋１」個の基準ベクトルデータサンプル１３０から構成される。結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）は、この例では１３２（０）、１３２（１）、．．．、および１３２（Ｘ）である、「Ｘ＋１」個の、結果として生じる相関出力ベクトルデータサンプル１３２から構成される。
【００７９】
[00128]引き続き図１１を参照すると、タップ付き遅延線７８は、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するために、ＶＰＥ２２（２）によって実行されるべき相関ベクトル命令に従う相関ベクトル処理動作の相関遅延タップ（すなわち、相関処理ステージ）ごとに、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）をシフトする。シフトされた入力ベクトルデータサンプル８６Ｓのすべては、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を備える。タップ付き遅延線７８は、相関ベクトル処理動作中、実行ユニット８４（０）〜８４（Ｘ）の実行ユニット入力９０（０）〜９０（Ｘ）にシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するために、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）をシフトする。このようにして、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）に対して実行される動作に基づく中間相関結果は、ＶＰＥ２２（２）によって実行される相関ベクトル処理動作の各処理ステージの間に、記憶、シフト、およびベクトルデータファイル８２（０）〜８２（Ｘ）から再フェッチされる必要がない。このように、タップ付き遅延線７８は、電力消費を低減し、ＶＰＥ２２（２）によって実行される相関ベクトル処理動作についての処理効率を上げることができる。
【００８０】
[00129]引き続き図１１を参照すると、実行ユニット８４（０）〜８４（Ｘ）は、相関ベクトル処理動作のためのシーケンス番号発生器（ＳＮＧ）１３４に記憶された基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）の中から基準ベクトルデータサンプル１３０も受信する。実行ユニット８４（０）〜８４（Ｘ）は、相関ベクトル処理動作の一部として、基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）を入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）と相関させるように構成される。しかしながら、シーケンス番号発生器（ＳＮＧ）１３４はレジスタまたは他のファイルでもあり得ることに留意されたい。この例における相関ベクトル処理動作はＣＤＭＡ相関ベクトル命令向けなので、シーケンス番号発生器１３４は、基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）を供給するために、この実施形態において提供される。基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）と入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）との間の相関が高い場合、基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）からの信号抽出に使用するための生成されたチップシーケンスとして供給される。
【００８１】
[00130]たとえば、ＣＤＭＡベクトル相関命令向けの相関ベクトル処理動作は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内のオンタイム入力ベクトルデータサンプル８６と、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内の後発入力ベクトルデータサンプルとの間の相関を提供する可能性がある。たとえば、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内のオンタイム入力ベクトルデータサンプル８６は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内の偶数の入力ベクトルデータサンプル８６（たとえば、８６（０）、８６（２）、８６（４）、．．．８６（Ｘ−１））であり得る。入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内の後発入力ベクトルデータサンプル８６は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内の奇数の入力ベクトルデータサンプル８６（たとえば、８６（１）、８６（３）、８６（５）、．．．８６（Ｘ））であり得る。代替として、オンタイム入力ベクトルデータサンプル８６は奇数の入力ベクトルデータサンプル８６であり得るし、後発入力ベクトルデータサンプル８６は偶数の入力ベクトルデータサンプル８６であり得る。相関ベクトル処理動作の結果、オンタイム入力ベクトルデータサンプル８６のための、結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）、および後発入力ベクトルデータサンプル８６は、信号抽出に入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）からのオンタイム入力ベクトルデータサンプルを使用するべきか、または後発入力ベクトルデータサンプルを使用するべきかを決定するために使用され得る。たとえば、オンタイム相関ベクトル処理動作は、以下の式に従って供給される場合がある、
【００８２】
【数２】
2016537725.tif 000004
【００８３】
ここで、  
ｎは入力信号サンプルの数であり、  
ｘ［ｎ］はデジタル化入力信号６６であり、  
ｙ［ｎ］は基準信号であり、  
ｌはサンプル数である。
【００８４】
[00131]後発相関ベクトル処理動作は、以下の式に従って提供される場合がある、
【００８５】
【数３】
2016537725.tif 000005
【００８６】
ここで、  
ｎは入力信号サンプルの数であり、  
ｘ［ｎ］はデジタル化入力信号６６であり、  
ｙ［ｎ］は基準信号であり、  
ｌはサンプル数である。  
基準信号ｙ［ｎ］（すなわち、基準ベクトルデータサンプル）は複素数であり得る。一態様では、ＶＰＥ２２（２）は、（たとえば、シーケンス番号発生器１３４から）基準信号を受信する場合がある。ＶＰＥ２２（２）は、オンタイム相関演算と後発相関演算とを実行するために受信された基準信号を直接使用する場合があり、その場合、上記の式における基準信号ｙ［ｎ］は、受信された基準信号を表す場合がある。代替として、ＶＰＥ２２（２）は、オンタイム相関演算と後発相関演算とを実行するために基準信号を使用する前に、受信された基準信号の複素共役を計算する場合があり、その場合、上記の式における基準信号ｙ［ｎ］は、受信された基準信号の共役を表す場合がある。
【００８７】
[00132]引き続き図１１を参照すると、実行ユニット８４（０）〜８４（Ｘ）は、各々、実行ユニット８４（０）〜８４（Ｘ）内の中間相関出力ベクトルデータサンプルを供給するために、相関ベクトル処理動作の各処理ステージの間に、基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）を、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）のシフトされた入力ベクトルデータサンプル８６Ｓ（０）、８６Ｓ（１）、．．．８６Ｓ（Ｘ）と乗算するように構成される。中間相関出力ベクトルデータサンプルセットは、実行ユニット８４（０）〜８４（Ｘ）の各々において累算される（すなわち、前に累算された相関出力ベクトルデータサンプルが現在の相関出力ベクトルデータサンプルに加算される）。これにより、実行ユニット８４（０）〜８４（Ｘ）によって生成された中間相関出力ベクトルデータサンプルセットを記憶しシフトする必要なしに、ＶＰＥ２２（２）によるさらなる使用および／または処理のためにそれぞれのベクトルデータファイル８２（０）〜８２（Ｘ）に戻して記憶されるべき入力ベクトルデータサンプルセット８６（０）、８６（１）、．．．８６（Ｘ）ごとに、それぞれ、出力データフローパス９８（０）〜９８（Ｘ）上の実行ユニット出力９６（０）〜９６（Ｘ）上に実行ユニット８４（０）〜８４（Ｘ）によって供給される、最終的な、結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）がもたらされる。
【００８８】
[00133]さらに、図１１のＶＰＥ２２（２）内に設けられた同じ構成要素およびアーキテクチャが、図４のＶＰＥ２２（１）内に設けられることに留意されたい。シーケンス番号発生器１３４は、フィルタ係数９２（０）〜９２（Ｙ−１）または基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）と処理されるべき他のデータを供給することができるグローバルレジスタファイル４０と、マルチプレクサ１３６によって加算および多重化される。したがって、図１１のＶＰＥ２２（２）は、前述のフィルタベクトル処理動作と、マルチプレクサ１３６の制御による、ここで説明され、下記でさらに詳細に説明される相関ベクトル処理動作の両方を提供することができる。マルチプレクサ１３６は、ＶＰＥ２２（２）によって実行されているベクトル命令に基づいて制御される選択器信号１３８によって制御され得る。フィルタベクトル命令の場合、選択器信号１３８は、実行ユニット８４（０）〜８４（Ｘ）に供給されるべきグローバルレジスタファイル４０からのフィルタ係数９２（０）〜９２（Ｙ−１）を供給するように構成され得る。相関ベクトル命令の場合、選択器信号１３８は、実行ユニット８４（０）〜８４（Ｘ）に供給されるべきシーケンス番号発生器１３４からの基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）を選択するように構成され得る。
【００８９】
[00134]引き続き図１１を参照すると、下記でより詳細に説明されるように、タップ付き遅延線７８（０）、７８（１）は、処理されているベクトル命令に従って制御されるようにプログラム可能である。相関ベクトル命令またはタップ付き遅延線７８を利用しない他の命令が処理されていない場合、タップ付き遅延線７８は、ベクトルデータファイル８２（０）〜８２（Ｘ）と実行ユニット８４（０）〜８４（Ｘ）との間の入力データフローパス８０（０）〜８０（Ｘ）に含まれないようにプログラムされ得る。この実施形態では、前に説明されたように、２つのタップ付き遅延線７８、プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）が設けられ、シャドウタップ付き遅延線７８（１）はこの実施形態ではオプションである。前に説明されたように、タップ付き遅延線７８がないと、実行ユニット８４（０）〜８４（Ｘ）にシフトされた中間入力ベクトルデータサンプルセットを再び供給するために、別個のシフティングプロセスが実行される必要があるはずであり、それにより、遅延時間が増大し、さらなる電力が消費される。さらに、相関ベクトル処理動作中、ベクトルデータファイル８２（０）〜８２（Ｘ）からのシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）の再フェッチ遅延によって、ＶＰＥ２２（２）内の入力データフローパス８０（０）〜８０（Ｘ）および出力データフローパス９８（０）〜９８（Ｘ）の効率が制限されない。シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）は、実行ユニット８４（０）〜８４（Ｘ）に局在するタップ付き遅延線７８によって供給される。実行ユニット８４（０）〜８４（Ｘ）におけるベクトル処理は、データフローの制限ではなく、コンピュータリソースのみによって制限される。
【００９０】
[00135]さらに、図１１のＶＰＥ２２（２）によって実行される相関ベクトル処理動作は、タップ付き遅延線７８を利用することによってより精密にされ得るが、これは、実行ユニット８４（０）〜８４（Ｘ）内の中間相関処理ステージのための出力累算がベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される必要がないからである。実行ユニット８４（０）〜８４（Ｘ）からベクトルデータファイル８２（０）〜８２（Ｘ）への中間ベクトルデータサンプルセットの記憶は、丸めをもたらす可能性がある。したがって、次の中間ベクトルデータサンプルセットがベクトル処理動作のために実行ユニット８４（０）〜８４（Ｘ）に供給されるとき、ベクトル処理動作の各乗算フェーズの間に任意の丸め誤差が伝搬および加算される。対照的に、図１１のＶＰＥ２２（２）の例では、実行ユニット８４（０）〜８４（Ｘ）によって計算された中間相関出力ベクトルデータサンプルセットは、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される必要がない。前の中間相関出力ベクトルデータサンプルセットは、次の相関出力ベクトルデータサンプルセットのための中間相関出力ベクトルデータサンプルセットと累算され得るが、これは、タップ付き遅延線７８が、処理されるべきベクトル処理動作の間に、実行ユニット８４（０）〜８４（Ｘ）にシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するからであり、結果は前の相関出力ベクトルデータサンプルセットのための前のベクトルデータサンプルセットと累算される。
【００９１】
[00136]上記図４のＶＰＥ２２（１）内に設けられた構成要素の前の説明は、図１１のＶＰＥ２２（２）に等しく適用可能であり、したがって再び記載されない。
【００９２】
[00137]図１１のＶＰＥ２２（２）のさらなる詳細および特徴、ならびにこの実施形態における入力データフローパス８０（０）〜８０（Ｘ）内の実行ユニット８４（０）〜８４（Ｘ）にシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するためのタップ付き遅延線７８のさらなる説明が次に記載される。この関連で、図１２Ａおよび図１２Ｂは、例示的な相関ベクトル命令に従って、タップ付き遅延線７８を利用する図１１のＶＰＥ２２（２）において実行され得る例示的な相関ベクトル処理動作１４０を示すフローチャートである。図１２Ａおよび図１２Ｂは、例示的な相関／共分散ベクトル処理動作に従って、インターリーブされたオンタイムおよび後発の入力ベクトルデータサンプルセットがフェッチされる、図１１のＶＰＥ２２（２）において並列に実行され得る例示的な相関／共分散ベクトル処理動作を示すフローチャートである。
【００９３】
[00138]図１３〜図１７Ｂにおいて提供される例を参照して、図１２Ａおよび図１２Ｂの相関ベクトル処理動作１４０において実行される例示的なタスクが記載される。図１２Ａを参照すると、相関ベクトル命令に従って相関ベクトル処理動作１４０において処理されるべき入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、相関ベクトル処理動作１４０のために、ベクトルデータファイル８２（０）〜８２（Ｘ）から入力データフローパス８０（０）〜８０（Ｘ）の中にフェッチされる（ブロック１４２）。図１１のＶＰＥ２２（２）に関して上記で説明されたように、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、実行ユニット８４（０）〜８４（Ｘ）内のシーケンス番号発生器１３４から受信された基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）と乗算される。たとえば、図１３は、シーケンス番号発生器１３４内の基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）を示す。この例では、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内の１６個の入力ベクトルデータサンプル８６（０）、８６（１）、．．．８６（１５）と相関されるべき、グローバルレジスタファイル４０に記憶された１６個の基準ベクトルデータサンプル１３０（０）、１３０（１）、．．．１３０（１５）が存在する。上記で前に説明された図６Ｂは、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶された例示的な入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を示したが、それはこの例においても適用可能であり、したがって、ここでは再び記載されない。
【００９４】
[00139]相関ベクトル処理動作１４０において相関されるべき入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）および基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）の幅に応じて、ベクトル命令のプログラミングに従う相関ベクトル処理動作１４０を提供するために、図１１のＶＰＥ２２（２）内のベクトルデータレーン１００（０）〜１００（Ｘ）の１つ、いくつか、またはすべてが利用され得る。ベクトルデータファイル８２（０）〜８２（Ｘ）の幅全体が必要な場合、すべてのベクトルデータレーン１００（０）〜１００（Ｘ）が相関ベクトル処理動作１４０に利用され得る。相関ベクトル処理動作１４０は、相関ベクトル処理動作１４０に利用され得るベクトルデータレーン１００（０）〜１００（Ｘ）のサブセットを必要とするにすぎない場合があることに留意されたい。これは、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅がすべてのベクトルデータファイル８２（０）〜８２（Ｘ）の幅よりも小さいからであり得るし、ここで、相関ベクトル処理動作１４０と並列に実行されるべき他のベクトル処理動作にさらなるベクトルデータレーン１００を利用することが望ましい。現在の例を説明する目的で、相関ベクトル処理動作１４０において利用される入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）および基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）が、ＶＰＥ２２（２）内のすべてのベクトルデータレーン１００（０）〜１００（Ｘ）を要すると想定する。
【００９５】
[00140]図１２Ａに戻って参照すると、相関ベクトル処理動作１４０のための第１の入力ベクトルデータサンプルセット８６Ｓ（０）〜８６（Ｘ）としてタップ付き遅延線７８にロードされるために、フェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、ベクトルデータファイル８２（０）〜８２（Ｘ）から入力データフローパス８０（０）〜８０（Ｘ）に供給される（ブロック１４４）。入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、相関ベクトル処理動作１４０のために実行ユニット８４（０）〜８４（Ｘ）によって処理されるべき入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）として、プライマリタップ付き遅延線７８（０）の中にロードされる。プライマリタップ付き遅延線７８（０）の中にロードされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、相関ベクトル処理動作１４０の最初の動作のためにシフトされない。次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）も、実行ユニット８４（１）〜８４（Ｘ）によって処理されるべき次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）として、シャドウタップ付き遅延線７８（１）の中にロードされ得る。上記で前に説明され、下記でさらに詳細に説明されるように、タップ付き遅延線７８の目的は、相関ベクトル処理動作１４０の動作の間に、次の相関演算のために実行ユニット８４（０）〜８４（Ｘ）にシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するために、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）のシフトを提供することである。実行ユニット８４（０）〜８４（Ｘ）によって実行される相関ベクトル処理動作１４０の各処理ステージの間に、実行ユニット８４（０）〜８４（Ｘ）にシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するために、入力ベクトルデータサンプル８６はプライマリタップ付き遅延線７８（０）内でシフトされる。このようにして、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、相関ベクトル処理動作１４０の相関演算ごとに、記憶、ベクトルデータファイル８２（０）〜８２（Ｘ）内でシフト、および再フェッチされる必要がない。
【００９６】
[00141]この関連で、図１４は、図１１のＶＰＥ２２（２）内に設けられ得る例示的なタップ付き遅延線７８を示す。この実施形態では、タップ付き遅延線７８は、シャドウタップ付き遅延線７８（１）とプライマリタップ付き遅延線７８（０）とを備える。上記で前に説明されたように、この例におけるプライマリタップ付き遅延線７８（０）は、入力ベクトルデータサンプル８６の解像度が８ビット長に落ちることを可能にするために、複数の８ビットプライマリパイプラインレジスタ１２０から構成される。実行ユニット８４（０）〜８４（Ｘ）によって処理される最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、相関ベクトル処理動作１４０の最初の相関演算のためにこの例ではシフトされない。実行ユニット８４（０）〜８４（Ｘ）が相関ベクトル処理動作１４０のために次の相関演算を処理するとき、プライマリタップ付き遅延線７８（０）に記憶された入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内の入力ベクトルデータサンプル８６は、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）になるために、図１４の矢印によって示されたように、プライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）内でシフトされる。このようにして、実行ユニット８４（０）〜８４（Ｘ）は、ベクトルデータファイル８２（０）〜８２（Ｘ）から入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を記憶、シフト、および再フェッチする必要なしに、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を受信し、それらの相関ベクトル処理動作１４０を実行することによって、十分利用される。
【００９７】
[00142]相関ベクトル処理動作１４０のためにプライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）において実行されるシフトの回数は、相関されるべきサンプルの数に依存する。ベクトルデータファイル８２（０）〜８２（Ｘ）からプライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）の中にフェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内の入力ベクトルデータサンプル８６の数が、相関ベクトル処理動作１４０における相関演算の数よりも大きい場合、実行ユニット８４（０）〜８４（Ｘ）は、任意のさらなる入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）がベクトルデータファイル８２（０）〜８２（Ｘ）から再フェッチされることなく、相関ベクトル処理動作１４０を実行することができる。しかしながら、相関ベクトル処理動作１４０における相関演算の数が、ベクトルデータファイル８２（０）〜８２（Ｘ）からプライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）の中にフェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内の入力ベクトルデータサンプル８６の数よりも大きい場合、相関ベクトル処理動作１４０の一部として、さらなる入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）がベクトルデータファイル８２（０）〜８２（Ｘ）からフェッチされ得る。
【００９８】
[00143]この実施形態では、プライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）はまとめて、ベクトルデータファイル８２（０）〜８２（Ｘ）の幅である。１５に等しい「Ｘ」を有する幅が５１２ビットであるベクトルデータファイル８２（０）〜８２（Ｘ）の例では、５１２ビット（すなわち、６４個のレジスタ×各８ビット）の合計幅を提供するために、各々が８ビットの幅である６４個の合計プライマリパイプラインレジスタ１２０（０）〜１２０（６３）が存在する。したがって、この例では、プライマリタップ付き遅延線７８（０）は、１つの入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅全体を記憶することが可能である。この例では、８ビット幅のプライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）を設けることによって、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、８ビット相関ベクトル処理動作のために８ビットベクトルデータサンプルサイズにシフトダウンされ得る。たとえば、１６ビットまたは３２ビットのサンプルなどのより大きい入力ベクトルデータサンプル８６のサイズが相関ベクトル処理動作１４０に望ましい場合、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、プライマリパイプラインレジスタ１２０（０）〜１２０（４Ｘ＋３）において、１度に２つのプライマリパイプラインレジスタ１２０によってシフトされ得る。
【００９９】
[00144]図１５Ａは、相関ベクトル処理命令１４０の第１のクロックサイクル（ＣＹＣＬＥ０）の間に、ベクトルデータファイル８２（０）〜８２（Ｘ）からプライマリタップ付き遅延線７８（０）の中にロードされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を示す。最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が入力ベクトルデータサンプルＸ１〜Ｘ３２としてプライマリタップ付き遅延線７８（０）の中にロードされるが、６４個の入力ベクトルデータサンプルが供給される。プライマリパイプラインレジスタ１２０（０）〜１２０（２Ｘ＋１）（図１４も参照）は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）からオンタイム入力ベクトルデータサンプルおよび後発入力ベクトルデータサンプルをロードされる。たとえば、プライマリタップ付き遅延線７８（０）の中に（および下記で後により詳細に説明されるように、シャドウタップ付き遅延線７８（１）の中にも）、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）のオンタイム入力ベクトルデータサンプルと後発入力ベクトルデータサンプルとをロードするために、特殊なベクトル命令がサポートされる場合がある。たとえば、プライマリパイプラインレジスタ１２２（０）、１２２（１）、１２２（２Ｘ＋２）、および１２２（２Ｘ＋３）はまとめて、入力ベクトルデータサンプル８６（０）を含んでいる。プライマリパイプラインレジスタ１２２（０）、１２２（１）は、Ｘ（０）およびＸ（１）であるオンタイム入力ベクトルデータサンプル８６ＯＴ（０）を含んでおり、ここで「ＯＴ」は「オンタイム」を意味する。プライマリパイプラインレジスタ１２２（２Ｘ＋２）、１２２（２Ｘ＋３）は、Ｘ（１）およびＸ（２）である後発入力ベクトルデータサンプル８６Ｌ（０）を含んでおり、ここで「Ｌ」は「後発」を意味する。プライマリタップ付き遅延線７８（０）内のこの入力ベクトルデータサンプル８６の記憶パターンは、他のプライマリパイプラインレジスタ１２２（２）〜１２２（２Ｘ＋１）および１２２（２Ｘ＋４）〜１２２（４Ｘ＋３）について繰り返される（図１４参照）。
【０１００】
[00145]図１４に戻って参照すると、シャドウタップ付き遅延線７８（１）もタップ付き遅延線７８内に設けられる。シャドウタップ付き遅延線７８（１）は、次のベクトル処理動作のためにベクトルデータファイル８２（０）〜８２（Ｘ）から次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）をラッチまたは輸送するために利用され得る。シャドウタップ付き遅延線７８（１）はまた、入力ベクトルデータサンプルの解像度が、プライマリタップ付き遅延線７８（０）と同様に８ビット長に落ちることを可能にするために、複数の８ビットシャドウパイプラインレジスタ１２２から構成される。シャドウパイプラインレジスタ１２２はまとめて、この例では５１２ビットであるベクトルデータファイル８２（０）〜８２（Ｘ）の幅であり、その結果、シャドウタップ付き遅延線７８（１）も、プライマリタップ付き遅延線７８（０）のように、１つの入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅全体を記憶することが可能である。したがって、この実施形態では、プライマリタップ付き遅延線７８（０）に含まれるシャドウパイプラインレジスタ１２２（０）〜１２２（４Ｘ＋３）の数は、合計１６であるベクトルデータレーン１００（０）〜１００（Ｘ）の数の４倍であり、この例では各ベクトルデータレーン１００（０）〜１００（Ｘ）が各々３２ビットをサポートすることが可能である。したがって、プライマリパイプラインレジスタ１２０の数も、この例では合計５１２ビット（すなわち、６４個のレジスタ×各８ビット）用に合計６４である。
【０１０１】
[00146]図１５Ｂは、相関ベクトル処理命令１４０の第２のクロックサイクル（ＣＹＣＬＥ１）の間に、シャドウタップ付き遅延線７８（１）の中にロードされた次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）を示す。相関ベクトル処理動作１４０の実行をセットアップするために、ベクトルデータファイル８２（０）〜８２（Ｘ）からの最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）がプライマリタップ付き遅延線７８（０）の中にロードされた後に、次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（１）がシャドウタップ付き遅延線７８（１）の中にロードされる。この次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）が、オンタイム入力ベクトルデータサンプル８６ＯＴと後発入力ベクトルデータサンプル８６Ｌの両方とともに、入力ベクトルデータサンプルＸ（３２）〜Ｘ（６３）としてシャドウタップ付き遅延線７８（１）の中にロードされる。この例では、上記で説明されたプライマリタップ付き遅延線７８（０）において提供される記憶パターンのように、Ｘ（３２）およびＸ（３３）が入力ベクトルデータサンプル８６（０）のオンタイム入力ベクトルデータサンプル８６ＯＴを形成し、Ｘ（３３）およびＸ（３４）が入力ベクトルデータサンプル８６（０）の後発入力ベクトルデータサンプル８６Ｌを形成することに留意されたい。入力ベクトルデータサンプル８６を一緒にグループ化して、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を形成するために、他のパターンが提供される可能性がある。シーケンス番号発生器１３４からの基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）から、相関ベクトル処理動作１４０の第１の処理ステージの間に相関された基準ベクトルデータサンプル１３０（すなわち、Ｙ（０）およびＹ（１））はまた、相関ベクトル処理動作１４０において使用するための図１５Ｂの実行ユニット８４（０）〜８４（Ｘ）へのレジスタ（「Ｃ」）内で供給されるものとして示される。
【０１０２】
[00147]図１４に戻って参照すると、相関ベクトル処理動作１４０の各処理ステージの間に、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内の入力ベクトルデータサンプル８６がプライマリタップ付き遅延線７８（０）内でシフトされるとき、シャドウパイプラインレジスタ１２２に記憶された次の入力ベクトルデータサンプル８６Ｎも、シャドウタップ付き遅延線７８（１）のシャドウパイプラインレジスタ１２２内でシフトされる。この例では、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の入力ベクトルデータサンプル８６は、オンタイムバージョンおよび後発バージョンとして記憶されるので、図１４のタップ付き遅延線７８（０）と７８（１）との間で提供されるシフトパターンは、図７のタップ付き遅延線７８（０）と７８（１）との間で提供されるシフトパターンとは異なる。図１４に示されたように、オンタイム入力ベクトルデータサンプル８６ＯＴは、シャドウタップ付き遅延線７８（１）内のシャドウパイプラインレジスタ１２２（０）から、プライマリタップ付き遅延線７８（０）内のプライマリパイプラインレジスタ１２０（２Ｘ＋１）にシフトされる。同じく、後発入力ベクトルデータサンプル８６Ｌは、シャドウタップ付き遅延線７８（１）内のシャドウパイプラインレジスタ１２２（２Ｘ＋２）から、プライマリタップ付き遅延線７８（０）内のプライマリパイプラインレジスタ１２０（４Ｘ＋３）にシフトされる。このようにして、入力ベクトルデータサンプル８６のシフトが相関ベクトル処理動作１４０の間に発生するとき、オンタイム入力ベクトルデータサンプル８６ＯＴおよび後発入力ベクトルデータサンプル８６ＯＴは、タップ付き遅延線７８（０）、７８（１）内で互いから隔離され続ける。
【０１０３】
[00148]相関ベクトル処理動作１４０の処理ステージが実行ユニット８４（０）〜８４（Ｘ）において進行し、最終的に、シャドウタップ付き遅延線７８（１）に最初に記憶された次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）全体は、処理のために実行ユニット８４（０）〜８４（Ｘ）に供給されるために、プライマリタップ付き遅延線７８（０）の中に完全にシフトされる。このようにして、相関ベクトル処理動作１４０が現在の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）に対して完了した後、実行ユニット８４（０）〜８４（Ｘ）は、次いで、必要な場合、遅延なく、次の相関ベクトル処理動作１４０のための現在の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）として、プライマリタップ付き遅延線７８（０）に記憶された前の次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）を供給され得る。
【０１０４】
[00149]最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）および次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）が、それぞれ、プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）の中にロードされた後、図１５Ｂに示されたように、プライマリタップ付き遅延線７８（０）内に供給された最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、相関ベクトル処理動作１４０の最初の処理ステージにおいて処理されるために、それぞれの実行ユニット８４（０）〜８４（Ｘ）に供給される（図１２Ａのブロック１４６）。最初の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、実行ユニット８４（０）〜８４（Ｘ）によって処理されている現在の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）になる。図１１のＶＰＥ２２（２）において示されたように、現在の入力ベクトルデータサンプル８６（０）は実行ユニット８４（０）に供給され、現在の入力ベクトルデータサンプル８６（１）は実行ユニット８４（１）に供給され、以下同様である。相関ベクトル処理動作１４０の現在の処理ステージにおいて、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）と相関されるべき基準ベクトルデータ入力サンプル１３０（０）〜１３０（Ｘ）が実行ユニット８４（０）〜８４（Ｘ）に供給される（図１２Ａのブロック１４８）。
【０１０５】
[00150]次に、実行ユニット８４（０）〜８４（Ｘ）が、相関ベクトル処理動作１４０（図１２Ａのブロック１５０）を実行する。より詳細には、実行ユニット８４（０）〜８４（Ｘ）は、演算：オンタイム入力ベクトルデータサンプル８６ＯＴのためのＲ（ＯＴ）［ｎ］＝ｙ［０］＊ｘ［ｎ］および後発入力ベクトルデータサンプル８６ＬのためのＲ（Ｌ）［ｎ］＝ｙ［１］＊ｘ［１＋ｎ］に従って、最初の処理ステージの間に現在の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を基準ベクトルデータサンプル１３０と乗算し、ここで、ｙ［］は指定された基準ベクトルデータサンプル１３０であり、ｘ［ｎ］は現在の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）である。相関の結果は、現在のオンタイム相関出力ベクトルデータサンプルセットＲ（ＯＴ）［ｎ］および現在の後発相関出力ベクトルデータサンプルセットＲ（Ｌ）［ｎ］である。次いで、実行ユニット８４（０）〜８４（Ｘ）が、新しい前の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を供給するために、各現在の、結果として生じる相関ベクトルデータサンプルセットを、実行ユニット８４（０）〜８４（Ｘ）によって計算された前の、結果として生じる相関ベクトルデータサンプルセットと累算する（図１２Ｂのブロック１５２）。相関ベクトル処理動作１４０の最初の処理ステージでは、前の、結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）は存在しない。したがって、相関ベクトル処理動作１４０の２番目の次の処理ステージのために、最初／現在の、結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）が前の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）になるにすぎない。
【０１０６】
[00151]相関ベクトル処理動作１４０のすべての処理ステージが完了した場合（図１２Ｂのブロック１５４）、ベクトルデータファイル８２（０）〜８２（Ｘ）に供給され記憶されるために、出力データフローパス９８（０）〜９８（Ｘ）内の、結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）として、累算された前の、結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）が供給される（図１２Ｂのブロック１５７）。相関ベクトル処理動作１４０のすべての処理ステージが完了していなかった場合（図１２Ａのブロック１５４）、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給するために、シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）が、相関ベクトル処理動作１４０のための次の場所にタップ付き遅延線７８（０）、７８（１）内でシフトされる（図１２Ｂのブロック１５６）。シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）は、前の、結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）と累算されるように、次の、結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）を計算するために供給される。タップ付き遅延線７８（０）、７８（１）内で入力ベクトルデータサンプル８６をシフトすることは、図１４に関して詳細に上記で前述された。
【０１０７】
[00152]図１５Ｃは、次の相関処理動作１４０、オンタイム入力ベクトルデータサンプル８６ＳＯＴのためのＲ（ＯＴ）［ｎ］＝ｙ［２］＊ｘ［２＋ｎ］および後発入力ベクトルデータサンプル８６ＳＬのためのＲ（Ｌ）［ｎ］＝ｙ［３］＊ｘ［３＋ｎ］のための新たなシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）になるために、相関ベクトル処理動作１４０の２番目の処理ステージにおいて、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）がシフトされたときのタップ付き遅延線７８のコンテンツを示す。プライマリタップ付き遅延線７８（０）内の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、２つの入力ベクトルデータサンプル８６によってシフトされる。たとえば、ｘ（２）およびＸ（３）の図１５Ｂの入力ベクトルデータサンプル８６ＯＴ（１）が、次に図１５Ｃの入力ベクトルデータサンプル８６Ｓ（０）の中にシフトされる。シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）は、現在の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）になる。実行ユニット８４（０）〜８４（Ｘ）に供給された基準ベクトルデータサンプル１３０はまた、この例ではＹ（２）およびＹ（３）である基準ベクトルデータサンプル１３０である。
【０１０８】
[00153]引き続き図１２Ｂを参照すると、次の基準ベクトルデータサンプル１３０と乗算されるために、プライマリタップ付き遅延線７８（０）から（およびシャドウタップ付き遅延線７８（１）の一部分から）実行ユニット８４（０）〜８４（Ｘ）に次のシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を供給する（図１２Ａのブロック１５０）ことによってプロセスが繰り返し、結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）が、前の、結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）と累算される（図１２Ｂのブロック１５２）。図１５Ｄは、例示的な相関ベクトル処理動作１４０の最後の処理ステージの間に、タップ付き遅延線７８（０）、７８（１）内に存在する入力ベクトルデータサンプル８６の状態を示す。この例では、図１５Ｄに示されたように、タップ付き遅延線７８のフルデータ幅は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）に利用されたが、オンタイム入力ベクトルデータサンプル８６ＯＴと後発入力ベクトルデータサンプル８６Ｌとの間で分割されるので、相関ベクトル処理動作１４０のための１６個の処理ステージが存在した。図１５Ｄに示されたように、Ｙ（３０）およびＹ（３１）は、相関ベクトル処理動作１４０における最後の基準ベクトルデータサンプル１３０（Ｘ）であり、それは、図１３の例では基準ベクトルセータサンプル１３０（１５）である。シフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）は（この例ではベクトルデータレーン１００（０）〜１００（Ｘ）の幅である）１６回シフトされており、その結果、相関ベクトル処理動作１４０のための最後の１６番目の処理ステージにおいて、入力ベクトルデータサンプルＸ（３０）およびＸ（３１）がプライマリタップ付き遅延線７８（０）内のシフトされた入力ベクトルデータサンプル８６Ｓ（０）に記憶される。
【０１０９】
[00154]図１６は、上記の例における例示的な１６個の相関ベクトル処理ステージが完全に実行された後の、図１１のＶＰＥ２２（２）内の実行ユニット８４（０）〜８４（Ｘ）内の累算器のコンテンツ（すなわち、結果として生じる相関出力ベクトルデータサンプル１３２）の概略図である。結果として生じる相関出力ベクトルデータサンプルセットは、１３２（０）〜１３２（Ｘ）として示される。この例では、各実行ユニット８４（０）〜８４（Ｘ）は、ベクトルデータレーン１００（０）〜１００（Ｘ）ごとに並列に配置された４つの累算器を有するので、累算器Ａｃｃ０〜Ａｃｃ３が図１６に示されている。累算された、結果として生じる出力ベクトルデータサンプルは、さらなる分析および／または処理のためにそこに記憶されるべき全体の結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）として、ベクトルデータファイル８２（０）〜８２（Ｘ）に出力データフローパス９８（０）〜９８（Ｘ）上で供給され得る。必要な場合、ベクトルデータファイル８２（０）〜８２（Ｘ）からベクトルユニットデータメモリ３２（図２参照）に、結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）の行を移動するために、特殊なベクトル命令がＶＰＥ２２（２）によってサポートされる場合がある。
【０１１０】
[00155]上述された、結果として生じるフィルタベクトル出力データサンプルセット９４（０）〜９４（Ｘ）と、結果として生じる相関出力ベクトルデータサンプルセット１３２（０）〜１３２（Ｘ）とを含む、実行ユニット８４（０）〜８４（Ｘ）によって供給される、結果として生じる出力ベクトルデータサンプルセットは、ＶＰＥによって実行されるベクトル命令に応じて、異なるインターリーブされたフォーマットでベクトルデータファイル８２（０）〜８２（Ｘ）、８２（３１）に戻されて記憶され得る。各々３２ビット幅であるベクトルデータファイル８２（０）〜８２（Ｘ）を提供するために、この例では「Ｘ」は３１に等しい。たとえば、図１７Ａに示されたように、結果として生じる出力ベクトルデータサンプルセット１５８（０）〜１５８（Ｘ）、１５８（３１）は、それらの実数（「ｑ」）成分および虚数（「ｉ」）成分によって分離されたベクトルデータファイル８２（０）〜８２（Ｘ）に記憶され得る。結果として生じる出力ベクトルデータサンプルセット１５８（０）〜１５８（Ｘ）は、この例では１５８（０）、１５８（１）、．．．、および１５８（Ｘ）である、「Ｘ＋１」個の、結果として生じる出力ベクトルデータサンプル１５８から構成される。次のベクトル命令が、入力ベクトルデータサンプルセットとして、結果として生じる出力ベクトルデータサンプルセット１５８（０）〜１５８（Ｘ）、１５８（３１）の実数成分および虚数成分に対して演算する場合など、効率目的でそれらの実数（「ｑ」）成分および虚数（「ｉ」）成分によって分離された、結果として生じる出力ベクトルデータサンプルセット１５８（０）〜１５８（Ｘ）、１５８（３１）を記憶することはより効率的であり得る。または、結果として生じる出力ベクトルデータサンプル１５８のその実数成分および虚数成分への分離のように、ベクトルデータファイル８２内に、結果として生じる出力ベクトルデータサンプル１５８を記憶することが可能ではない場合がある。たとえば、１６ビットベクトルデータサンプルが別の１６ビットベクトルデータサンプルと乗算される場合、３２ビットの結果として生じるベクトルデータサンプルがもたらされる。たとえば、３２ビットの結果として生じる出力ベクトルデータサンプル１５８は、図１７ＡのＹ０であり得る。Ｙ０の虚数成分Ｙ０．ｉ１５８（Ｉ）はベクトルデータファイル８２（０）のＡＤＤＲＥＳＳ「０」に記憶され得るし、Ｙ０の実数成分Ｙ０．ｑ１５８（Ｑ）はＡＤＤＲＥＳＳ「Ａ」などの別のＡＤＤＲＥＳＳに記憶され得る。
【０１１１】
[00156]図１７Ａの結果として生じる出力ベクトルデータサンプルセット１５８（０）〜１５８（Ｘ）、１５８（３１）は、偶数および奇数の結果として生じる出力ベクトルデータサンプルによってインターリーブされたベクトルデータファイル８２（０）〜８２（Ｘ）、８２（３１）に記憶される可能性がある。これは図１７Ｂにおける例によって示される。図１７Ｂに示されたように、結果として生じる出力ベクトルデータサンプルＹ０〜Ｙ３１  １５８（０）〜１５８（Ｘ）、１５８（３１）は、ベクトルデータファイル８２（０）〜８２（３１）内のＡＤＤＲＥＳＳ「０」およびＡＤＤＲＥＳＳ「Ａ」の中の偶数および奇数のベクトルデータサンプルによってインターリーブされたフォーマットで記憶される。結果として生じる出力ベクトルデータサンプルＹ０  １５８（０）は、ベクトルデータファイル８２（０）内のＡＤＤＲＥＳＳ「０」に記憶される。結果として生じる出力ベクトルデータサンプルＹ１  １５８（１）は、ベクトルデータファイル８２（１）内のＡＤＤＲＥＳＳ「０」に記憶されないが、ベクトルデータファイル８２（０）内のＡＤＤＲＥＳＳ「Ａ」に記憶される。結果として生じる出力ベクトルデータサンプルＹ２  １５８（２）は、ベクトルデータファイル８２（１）内のＡＤＤＲＥＳＳ「０」に記憶され、以下同様である。
【０１１２】
[00157]いくつかのワイヤレスベースバンド動作は、データサンプルが処理される前にフォーマット変換されることを必要とする。たとえば、図１７Ａおよび図１７Ｂにおいてインターリーブされたフォーマットでベクトルデータファイル８２（０）〜８２（Ｘ）に記憶された、結果として生じる出力ベクトルデータサンプルセット１５８（０）〜１５８（Ｘ）は、次のベクトル処理動作のためにデインターリーブされる必要があり得る。たとえば、結果として生じる出力ベクトルデータサンプル１５８（０）〜１５８（Ｘ）がＣＤＭＡ信号を表す場合、結果として生じる出力ベクトルデータサンプル１５８（０）〜１５８（Ｘ）は、信号の偶数フェーズおよび奇数フェーズを分離するためにデインターリーブされる必要があり得る。デインターリーブされた信号は、ＣＤＭＡシステムが信号を抽出することができるかどうかを決定するために、図１１〜図１６に関して上述された例示的な相関ベクトル処理動作などの相関処理動作において、ローカルに生成されたコードまたはシーケンス番号と相関される場合もある。従来のプログラマブルプロセッサは、複数のステップでデータサンプルのフォーマット変換を実施し、それは、ベクトルデータサンプルのフォーマット変換において、サイクルと、電力消費と、データフローの複雑化とを加える。ベクトルプロセッサは、フォーマット変換されたベクトルデータサンプルが実行ユニットに供給される前にフォーマット変換を提供するように、ベクトルデータサンプルを前処理することができる。フォーマット変換されたベクトルデータサンプルは、ベクトルデータメモリに記憶され、実行ユニットによって処理されるべきデータフォーマット変換を必要とするベクトル処理動作の一部として再フェッチされる。しかしながら、ベクトルデータサンプルのこのフォーマット前処理は、実行ユニットによるフォーマット変換されたベクトルデータサンプルの次の処理を遅延させ、実行ユニット内のコンピュータ構成要素が過少利用される原因になる。
【０１１３】
[00158]本明細書において下記で開示される実施形態は、図１８Ａおよび図１８Ｂに示されたベクトルデータサンプルセットなどの、インターリーブされたベクトルデータサンプルセットの変換を提供する。たとえば、図１８Ａおよび図１８Ｂは、様々なフォーマットでベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されたベクトルデータサンプルセットＤ（０）〜Ｄ（Ｘ）を示す。図１８Ａは、符号付き複素数（ＳＣ）の１６ビットサンプル（ＳＣ１６）に記憶され、実数成分および虚数成分によってフォーマットインターリーブされたベクトルデータサンプルセットＤ（０）〜Ｄ（Ｘ）を示す。３２ビットベクトルデータサンプルＤ（０）の１６ビットの実数成分Ｄ（０）（Ｑ）および虚数成分Ｄ（０）（Ｉ）は、３２ビットベクトルデータファイル８２（０）に記憶される。ベクトルデータサンプルＤ（Ｘ）の１６ビットの実数成分Ｄ（Ｘ）（Ｑ）および虚数成分Ｄ（Ｘ）（Ｉ）は、３２ビットベクトルデータファイル８２（Ｘ）に記憶される。図１８Ｂは、ＳＣの８ビットサンプル（ＳＣ８）に記憶され、実数成分および虚数成分によってフォーマットインターリーブされたベクトルデータサンプルセットＤ（０）〜Ｄ（Ｘ）を示す。１６ビットベクトルデータサンプルＤ（０）（１）の８ビットの実数成分Ｄ（０）（１）（Ｑ）および虚数成分Ｄ（０）（１）（Ｉ）は、ベクトルデータファイル８２（０）に記憶される。１６ビットベクトルデータサンプルＤ（０）（０）の８ビットの実数成分Ｄ（０）（０）（Ｑ）および虚数成分Ｄ（０）（０）（Ｉ）も、３２ビットベクトルデータファイル８２（０）に記憶される。同じく、１６ビットベクトルデータサンプルＤ（Ｘ）（１）の８ビットの実数成分Ｄ（Ｘ）（１）（Ｑ）および虚数成分Ｄ（Ｘ）（１）（Ｉ）は、３２ビットベクトルデータファイル８２（Ｘ）に記憶される。１６ビットベクトルデータサンプルＤ（Ｘ）（０）の８ビットの実数成分Ｄ（Ｘ）（０）（Ｑ）および虚数成分Ｄ（Ｘ）（０）（Ｉ）も、３２ビットベクトルデータファイル８２（Ｘ）に記憶される。
【０１１４】
[00159]この関連で、図１９は、図２のＶＰＥ２２として提供され得る別の例示的なＶＰＥ２２（３）の概略図である。下記でより詳細に記載されるように、図１９のＶＰＥ２２（３）は、ベクトルデータサンプルの再フェッチが除去または低減され、電力消費が低減される、ＶＰＥ２２（３）内のベクトル処理動作のために実行ユニットに供給される入力ベクトルデータサンプルセットのインフライトフォーマット変換（たとえば、デインターリービング）を提供するように構成される。入力ベクトルデータサンプルセットのインフライトフォーマット変換は、ベクトルデータメモリから取り出された入力ベクトルデータサンプルセットが、実行のために実行ユニットに供給される前に、ベクトルデータメモリに記憶され、そこから再フェッチされる必要なしに、フォーマット変換されることを意味する。ベクトルデータファイルからの入力ベクトルデータサンプルの再フェッチを除去または最小化して、電力消費を低減し、処理効率を改善するために、ベクトルデータファイル８２（０）〜８２（Ｘ）と実行ユニット８４（０）〜８４（Ｘ）との間のベクトルデータレーン１００（０）〜１００（Ｘ）の各々に、フォーマット変換回路１５９（０）〜１５９（Ｘ）が含まれる。下記でより詳細に説明されるように、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）のデインターリービングを必要とするベクトル処理動作のために、実行ユニット８４（０）〜８４（Ｘ）にフォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）を供給するために、ＶＰＥ２２（３）内のフォーマット変換回路１５９（０）〜１５９（Ｘ）において、ベクトルデータファイル８２（０）〜８２（Ｘ）からの入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）がフォーマット変換（たとえば、デインターリーブ）される。フォーマット変換された入力ベクトルデータサンプル８６Ｆのすべては、この例ではフォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）を備える。「Ｘ」＋１は、この例における入力ベクトルデータサンプル８６の処理用にＶＰＥ２２（３）内に設けられる並列入力データレーンの最大数である。
【０１１５】
[00160]このようにして、ＶＰＥ２２（３）における入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）のフォーマット変換は、前処理、記憶、およびベクトルデータファイル８２（０）〜８２（Ｘ）からの再フェッチを必要とせず、それにより、電力消費が低減される。さらに、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）のフォーマット変換は、ベクトルデータファイル８２（０）〜８２（Ｘ）からのフォーマット変換された入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の前処理、記憶、および再フェッチを必要としないので、実行ユニット８４（０）〜８４（Ｘ）はベクトル処理動作を実行することから遅延されない。したがって、ＶＰＥ２２（３）内のデータフローパスの効率は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）のフォーマット変換前処理の遅延によって制限されない。フォーマット変換（たとえば、デインターリーブ）された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）は、実行ユニット８４（０）〜８４（Ｘ）に局在化されるように供給される。実行ユニット８４（０）〜８４（Ｘ）におけるベクトル処理は、データフローの制限ではなく、コンピュータリソースのみによって制限される。
【０１１６】
[00161]プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）が図１９のＶＰＥ２２（３）内に示されるが、図１９のＶＰＥ２２（３）内にタップ付き遅延線を含めることは必要でないことに留意されたい。この例では、図１９に示されたように、フォーマット変換回路１５９（０）〜１５９（Ｘ）は、オプションのプライマリタップ付き遅延線７８（０）に含まれ得る。この配置は、図１９のＶＰＥ２２（３）内のベクトルデータファイル８２（０）〜８２（Ｘ）と実行ユニット８４（０）〜８４（Ｘ）との間の入力データフローパス８０（０）〜８０（Ｘ）内にフォーマット変換回路１５９（０）〜１５９（Ｘ）を設ける。プライマリタップ付き遅延線７８（０）の動作は、ＶＰＥ２２（１）およびＶＰＥ２２（２）に関して上記で前述された。上記で前に説明されたように、プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）は、ベクトル処理動作に利用される場合があり、フォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）が実行ユニット８４（０）〜８４（Ｘ）に供給されることを必要とし、実行ユニット８４（０）〜８４（Ｘ）も、８６ＳＦ（０）〜８６ＳＦ（Ｘ）と指定された、フォーマット変換されシフトされた入力ベクトルデータサンプルセットを必要とする。
【０１１７】
[00162]図１９のＶＰＥ２２（３）内に設けられた同じ構成要素およびアーキテクチャが、図１１のＶＰＥ２２（２）内に設けられることに留意されたい。図１９のＶＰＥ２２（３）と図１１のＶＰＥ２２（２）との間の共通構成要素が、ＶＰＥ２２（２）の図１１の構成要素と共通の要素番号とともに図１９に示されている。上記図１１のＶＰＥ２２（２）のためのこれらの共通構成要素の前の記載および説明は、図１９のＶＰＥ２２（３）にも適用可能であり、したがってここでは再び記載されない。
【０１１８】
[00163]図１９のＶＰＥ２２（３）のさらなる詳細および特徴、ならびにこの実施形態における入力データフローパス８０（０）〜８０（Ｘ）内の実行ユニット８４（０）〜８４（Ｘ）にフォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）を供給するためのタップ付き遅延線７８のさらなる説明が次に記載される。この関連で、図２０は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）のフォーマット変換を必要とする例示的なベクトル命令に従って、フォーマット変換回路１５９（０）〜１５９（Ｘ）を利用する図１９のＶＰＥ２２（３）において実行され得る、例示的なデインターリービングフォーマット変換ベクトル処理動作１６０を示すフローチャートである。
【０１１９】
[00164]図２０を参照すると、ベクトル命令に従うベクトル処理動作１６０のための入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、ベクトルデータファイル８２（０）〜８２（Ｘ）から入力データフローパス８０（０）〜８０（Ｘ）の中にフェッチされる（ブロック１６２）。たとえば、ベクトル処理動作１６０のためのフォーマット変換は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、ベクトルデータファイル８２（０）〜８２（Ｘ）内のそのインターリーブされた状態から、デインターリーブされた入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）の中にデインターリーブされる、デインターリービングベクトル処理動作１６０であり得る。ベクトル処理動作１６０のためにフォーマット変換されるべき入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅に応じて、ベクトル命令のプログラミングに従うベクトル処理動作１６０を提供するために、図１９のＶＰＥ２２（３）内のベクトルデータレーン１００（０）〜１００（Ｘ）の１つ、いくつか、またはすべてが利用され得る。ベクトルデータファイル８２（０）〜８２（Ｘ）の幅全体が必要な場合、すべてのベクトルデータレーン１００（０）〜１００（Ｘ）がベクトル処理動作１６０に利用され得る。ベクトル処理動作１６０は、ベクトル処理動作１６０に利用され得るベクトルデータレーン１００（０）〜１００（Ｘ）のサブセットを必要とするにすぎない場合がある。これは、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅がすべてのベクトルデータファイル８２（０）〜８２（Ｘ）の幅よりも小さいからであり得るし、ここで、ベクトル処理動作１６０と並列に実行されるべき他のベクトル処理動作にさらなるベクトルデータレーン１００を利用することが望ましい。現在の例を説明する目的で、ベクトル処理動作１６０のための入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）にフォーマット変換された入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、図１９のＶＰＥ２２（３）内のすべてのベクトルデータレーン１００（０）〜１００（Ｘ）を要すると想定する。
【０１２０】
[00165]引き続き図２０を参照すると、ベクトル処理動作１６０に従ってフォーマット変換されるために、フェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、フォーマット変換回路１５９（０）〜１５９（Ｘ）への入力データフローパス８０（０）〜８０（Ｘ）の中に供給される（ブロック１６４）。非限定的な例として、現在の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、場合によっては、ベクトル処理動作１６０のために実行ユニット８４（０）〜８４（Ｘ）に供給される前にフォーマット変換されるべき入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）として、プライマリタップ付き遅延線７８（０）の中にロードされる場合がある。前に説明されたように、次の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、場合によっては、実行ユニット８４（０）〜８４（Ｘ）によって処理されるべき次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）として、シャドウタップ付き遅延線７８（１）の中にロードされる場合もある。上記で前に説明されたように、タップ付き遅延線７８の目的は、シフトされた入力ベクトルデータサンプル８６に対して演算するベクトル処理動作１６０の動作の間に、実行ユニット８４（０）〜８４（Ｘ）に供給されるべきシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）に、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）をシフトすることである。フォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）も、ベクトル処理動作１６０の間にタップ付き遅延線７８内でシフトされた場合、シフトされフォーマット変換された入力ベクトルデータサンプルセットは、８６ＳＦ（０）〜８６ＳＦ（Ｘ）と指定される。
【０１２１】
[00166]引き続き図２０を参照すると、実行ユニット８４（０）〜８４（Ｘ）は、次に、フォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）を使用して、ベクトル処理動作１６０を実行することができる（ブロック１６６）。実行ユニット８４（０）〜８４（Ｘ）は、フォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）を使用して、乗算および／または累算を提供するように構成される場合がある。タップ付き遅延線７８がベクトル処理動作１６０の間にフォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）をシフトするために利用される場合、実行ユニット８４（０）〜８４（Ｘ）は、ベクトル処理動作１６０が完了するまで、ベクトル処理動作１６０の各処理ステージの間にシフトされフォーマット変換された入力ベクトルデータサンプルセット８６ＳＦ（０）〜８６ＳＦ（Ｘ）を受信することができる（ブロック１６８）。ベクトル処理動作１６０が完了すると、フォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）、またはシフトされフォーマット変換された入力ベクトルデータサンプルセット８６ＳＦ（０）〜８６ＳＦ（Ｘ）を伴うベクトル処理動作に基づく、結果として生じる出力ベクトルデータサンプルセット１７２（０）〜１７２（Ｘ）が、ベクトルデータファイル８２（０）〜８２（Ｘ）に供給され記憶されるために、出力データフローパス９８（０）〜９８（Ｘ）内に供給される（ブロック１７０）。結果として生じる出力ベクトルデータサンプルセット１７２（０）〜１７２（Ｘ）は、この例では１７２（０）、１７２（１）、．．．、および１７２（Ｘ）である、「Ｘ＋１」個の、結果として生じる出力ベクトルデータサンプル１７２から構成される。
【０１２２】
[00167]図２１は、プライマリタップ付き遅延線７８（０）からシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を受信する例示的なフォーマット変換回路１５９（０）〜１５９（Ｘ）の概略図である。この例では、フォーマット変換回路１５９（０）〜１５９（Ｘ）は、入力データフローパス８０（０）〜８０（Ｘ）内のプライマリタップ付き遅延線７８（０）の出力上に設けられる。例示的なフォーマット変換回路１５９（０）〜１５９（Ｘ）が次に記載される。
【０１２３】
[00168]例示的なフォーマット変換回路１５９（０）〜１５９（Ｘ）が次に記載される。フォーマット変換回路１５９（０）の内部構成要素の例示的な詳細が図２１において提供されるが、それはフォーマット変換回路１５９（１）〜１５９（Ｘ）にも適用可能である。例として図２１のフォーマット変換回路１５９（０）を取り上げると、この例におけるフォーマット変換回路１５９（０）は、それぞれ、フォーマット変換された入力ベクトルデータサンプル８６Ｆ（０）、またはシフトされフォーマット変換された入力ベクトルデータサンプル８６ＳＦ（０）を供給するために、ベクトルデータレーン１００（０）内のプライマリパイプラインレジスタ１２０（０）、１２０（１）、１２０（２Ｘ＋２）、１２０（２Ｘ＋３）からの入力ベクトルデータサンプル８６（０）またはシフトされた入力ベクトルデータサンプル８６Ｓ（０）のデインターリービングと符号拡張（sign extention）とを提供するように構成される。この関連で、この例では４つのマルチプレクサ１７４（３）〜１７４（０）が提供され、それらは、それぞれ、割り当てられたプライマリパイプラインレジスタ１２０（０）〜１２０（２Ｘ＋３）に従って配置される。各マルチプレクサ１７４（３）〜１７４（０）は、割り当てられたプライマリパイプラインレジスタ１２０（０）、１２０（１）、１２０（２Ｘ＋２）、１２０（２Ｘ＋３）内のシフトされた入力ベクトルデータサンプル８６Ｓ（０）の部分、または割り当てられたプライマリパイプラインレジスタ１２０（０）、１２０（１）、１２０（２Ｘ＋２）、１２０（２Ｘ＋３）に隣接するプライマリパイプラインレジスタ１２０に記憶するシフトされた入力ベクトルデータサンプル８６Ｓ（０）の部分のいずれかを選択するように構成される。
【０１２４】
[00169]たとえば、プライマリパイプラインレジスタ１２０（０）、１２０（１）、１２０（２Ｘ＋２）、１２０（２Ｘ＋３）が、実数［１５：８］、虚数［１５：８］、実数［７：０］、虚数［７：０］として、複素数のインターリーブされた形式でインターリーブされシフトされた入力ベクトルデータサンプル８６Ｓ（０）を記憶し、所望のデインターリーブされたフォーマットが、実行されるべきベクトル命令に従う実数［１５：０］および虚数［１５：０］である場合、マルチプレクサ１７４（３）〜１７４（０）の選択は以下のようであるはずである。マルチプレクサ１７４（３）は、その割り当てられたプライマリパイプラインレジスタ１２０（０）に記憶された、シフトされた入力ベクトルデータサンプル８６Ｓの部分を選択するはずである。しかしながら、マルチプレクサ１７４（２）は、プライマリパイプラインレジスタ１２０（１）に記憶された、シフトされた入力ベクトルデータサンプル８６Ｓの部分を選択するはずである。これは、隣接する入力データフローパス８０（０）（３）、８０（０）（２）内の入力ベクトルデータサンプル８６Ｓ（０）のデインターリーブされた実数部分（すなわち、実数［１５：０］）を供給するはずである。同様に、マルチプレクサ１７４（０）は、その割り当てられたプライマリパイプラインレジスタ１２０（２Ｘ＋３）に記憶された、シフトされた入力ベクトルデータサンプル８６Ｓの部分を選択するはずである。しかしながら、マルチプレクサ１７４（１）は、プライマリパイプラインレジスタ１２０（２Ｘ＋２）に記憶された、シフトされた入力ベクトルデータサンプル８６Ｓの部分を選択するはずである。これは、隣接する入力データフローパス８０（０）（１）、８０（０）（０）内のシフトされた入力ベクトルデータサンプル８６Ｓ（０）のデインターリーブされた虚数部分（すなわち、虚数［１５：０］）を供給するはずである。マルチプレクサ１７６（１）、１７６（０）は、図２１に示されたように、割り当てられていない、隣接しないプライマリパイプラインレジスタ１２０（０）、１２０（１）、１２０（２Ｘ＋２）、１２０（２Ｘ＋３）から、シフトされた入力ベクトルデータサンプル８６Ｓ（０）の部分を選択する能力を各マルチプレクサ１７４（３）〜１７４（０）に提供する。
【０１２５】
[00170]引き続き図２１を参照すると、フォーマット変換回路１５９（０）〜１５９（Ｘ）はまた、フォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）を符号拡張する（sign extend）ように構成され得る。たとえば、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）のフォーマット変換が、小さいビット幅から大きいビット幅に変換された符号付きベクトルデータサンプルを要する場合、フォーマット変換回路１５９（０）〜１５９（Ｘ）は、非負数の場合「０」として、負数の場合「Ｆ」として最上位ビットを拡張することによって、デインターリーブされたベクトルデータサンプルを符号拡張するように構成され得る。フォーマット変換回路１５９（０）〜１５９（Ｘ）は、フォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）に対して符号拡張が実行されるべきか否かを示すために、実行されているベクトル命令に従って設定される符号拡張（ＳＣ）入力１７８（０）〜１７８（Ｘ）を有する場合がある。ＳＣ入力１７８（０）〜１７８（Ｘ）は、処理されているベクトル命令に従ってＳＣ入力１７８（０）〜１７８（Ｘ）によって提供されたプログラム可能なデータパス構成に従って符号拡張を実行するために、フォーマット変換回路１５９（０）〜１５９（Ｘ）内に設けられた符号拡張回路１８０（０）〜１８０（Ｘ）に供給され得る。ＳＣ入力１７８（０）〜１７８（Ｘ）は、ＶＰＥ２２（３）によるベクトル処理において柔軟性を提供するように、ベクトル命令ごとに構成および再構成され得る。たとえば、フォーマット変換回路１５９（０）〜１５９（Ｘ）内のプログラム可能なデータパスは、必要な場合、実行ユニット８４（０）〜８４（Ｘ）を十分に利用して、必要に応じてフォーマット変換を提供するために、ベクトル命令のクロックサイクルごとに、必要な場合クロックサイクルごとに、構成および再構成され得るＳＣ入力１７８（０）〜１７８（Ｘ）によって構成され得る。
【０１２６】
[00171]しかし、上記で説明されたように、フォーマット変換回路１５９（０）〜１５９（Ｘ）は、プライマリタップ付き遅延線７８（０）の一部として設けられる必要がない。プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）はオプションである。フォーマット変換回路１５９（０）〜１５９（Ｘ）は、ベクトルデータファイル８２（０）〜８２（Ｘ）から直接入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を受信する可能性がある。このシナリオでは、例として、図２１を参照すると、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、直接ベクトルレジスタファイル８２（０）〜８２（Ｘ）からプライマリレジスタ１２０（０）〜１２０（４Ｘ＋３）の中にロードされる可能性がある。
【０１２７】
[00172]さらに、フォーマット変換回路１５９（０）〜１５９（Ｘ）は、フォーマット変換された入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）へのプライマリタップ付き遅延線７８（０）の出力上に設けられるが、それは必要でないことに留意されたい。図２１のフォーマット変換回路１５９（０）〜１５９（Ｘ）は、プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）の入力側に設けられる可能性があり、その結果、ベクトルデータファイル８２（０）〜８２（Ｘ）からフェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）の中にロードされるより前に、フォーマット変換回路１５９（０）〜１５９（Ｘ）内でフォーマット変換される。この例では、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、プライマリタップ付き遅延線７８（０）およびシャドウタップ付き遅延線７８（１）において、フォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）（またはシフト後の８６ＳＦ（０）〜８６ＳＦ（Ｘ））として記憶されるはずである。フォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）（またはシフト後の８６ＳＦ（０）〜８６ＳＦ（Ｘ））は、次いで、ベクトル処理動作における実行のために、直接プライマリタップ付き遅延線７８（０）から直接実行ユニット８４（０）〜８４（Ｘ）に供給される可能性がある。
【０１２８】
[00173]上記で説明されたように、入力データフローパス８０（０）〜８０（Ｘ）は、実行されるべきベクトル命令に従ってフォーマット変換回路１５９（０）〜１５９（Ｘ）を利用するように、プログラム可能な入力データパス構成に従ってプログラムされ得る。この関連で、図２２は、図１９のＶＰＥ２２（３）における入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）のシフトおよびフォーマット変換のプログラミングを制御するベクトル命令のビットの例示的なデータフォーマットを提供するチャート１８２である。チャート１８２内のフィールドに提供されたデータは、それらの機能が処理されるべきベクトル命令に必要とされるかどうかに応じて、フォーマット変換回路１５９（０）〜１５９（Ｘ）および／またはタップ付き遅延線７８が入力データフローパス８０（０）〜８０（Ｘ）に含まれるかどうかを制御するように、ＶＰＥ２２（３）にプログラミングを提供する。
【０１２９】
[00174]図２２では、たとえば、タップ付き遅延線７８によって符号付き複素数１６ビットフォーマット（ＳＣ１６）を使用するとき、算術命令のためのシフトバイアスが提供されるかどうかを示すために、ベクトル命令またはベクトルプログラミングのビット［７：０］にバイアスフィールド１８４（ＢＩＡＳ＿ＳＣ１６）が設けられる。第１のソースデータ（すなわち、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ））が縮小化（すなわち、デインターリーブ）され、ＳＣ８フォーマットからＳＣ１６フォーマットに変換されるべきか否かを示すために、ベクトル命令またはベクトルプログラミングのビット［１６］に第１のソースデータフォーマット変換フィールド１８６（ＤＥＣＩＭＡＴＥ＿ＳＲＣ１）が設けられる。第２のソースデータ（すなわち、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ））が縮小化（すなわち、デインターリーブ）され、ＳＣ８フォーマットからＳＣ１６フォーマットに変換されるべきか否かを示すために、ベクトル命令またはベクトルプログラミングのビット［１７］に第２のソースデータフォーマット変換フィールド１８８（ＤＥＣＩＭＡＴＥ＿ＳＲＣ２）が設けられる。出力ソースデータ（たとえば、図１９のＶＰＥ２２（３）内の、結果として生じる出力ベクトルデータサンプルセット１７２（０）〜１７２（Ｘ））が、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されるとき、ＳＣ１６フォーマットで記憶されるべきか、またはＳＣ１６フォーマットからＳＣ８フォーマットに変換され並び替えられるべきかを示すために、ビット［１８］に出力データフォーマットフィールド１９０（ＤＥＳＴ＿ＦＭＴ）が設けられる。上記および図１７Ｂに前述されたように、特にＣＤＭＡ固有のベクトル処理動作に有用であり得る、偶数（たとえば、オンタイム）サンプルおよび奇数（たとえば、後発）サンプルに沿って、入力ソースデータ（すなわち、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ））および出力データ（たとえば、図１９のＶＰＥ２２（３）内の、結果として生じる出力ベクトルデータサンプルセット１７２（０）〜１７２（Ｘ））が、縮小化（すなわち、デインターリーブ）されるべきかどうかを示すために、ビット［１９］にフェーズフォーマットフィールド１９２（ＤＥＣＩＭＡＴＥ＿ＰＨＡＳＥ）が設けられる。
【０１３０】
[00175]上記で説明されたように、ＶＰＥ２２内の実行ユニット８４（０）〜８４（Ｘ）が入力ベクトルデータサンプルに対してベクトル処理を実行し、結果として出力データフローパス９８（０）〜９８（Ｘ）上に、結果として生じる出力ベクトルデータサンプルセットを供給した後、次のベクトル処理動作は、結果として生じる出力ベクトルデータサンプルセットに対して実行される必要があり得る。しかしながら、結果として生じる出力ベクトルデータサンプルセットは、次のベクトル処理動作のために並び替えられる必要があり得る。したがって、前の処理動作から得られた、結果として生じる出力ベクトルデータサンプルセットは、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶され、並び替えのためにフェッチされ、ベクトルデータファイル８２（０）〜８２（Ｘ）に並び替えられたフォーマットで再記憶されなければならない。たとえば、図１７Ａおよび図１７Ｂにおいて上記で説明されたように、次の処理動作は、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されるときに、前に処理されたベクトルデータサンプルがインターリーブされることを必要とする場合がある。
【０１３１】
[00176]別の例として、次の処理動作は、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されるときに、前に処理されたベクトルデータサンプルがデインターリーブされることを必要とする場合がある。たとえば、ＣＤＭＡ処理動作では、信号を表すデータサンプルは、信号の偶数（たとえば、オンタイム）フェーズおよび奇数（たとえば、後発）フェーズに従って記憶されインターリーブされる必要があり得る。この問題を解決するために、ベクトルプロセッサは、出力ベクトルデータがベクトルデータメモリに記憶された後に、実行ユニットからの出力ベクトルデータの後処理並び替えを実行する回路を含むことができる。ベクトルデータメモリに記憶された、後処理された出力ベクトルデータサンプルは、ベクトルデータメモリからフェッチされ、並び替えられ、ベクトルデータメモリに戻されて記憶される。この後処理は、実行ユニットによる並び替えられたベクトルデータサンプルの次の処理を遅延させ、実行ユニット内のコンピュータ構成要素が過少利用される原因になる。
【０１３２】
[00177]この関連で、図２３は、図２のＶＰＥ２２として提供され得る別の例示的なＶＰＥ２２（４）の概略図である。下記でより詳細に記載されるように、図２３のＶＰＥ２２（４）は、ベクトルデータサンプルの再フェッチが除去または低減され、電力消費が低減される、ＶＰＥ２２（４）内のベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されるべき、ベクトル処理動作のために実行ユニット８４（０）〜８４（Ｘ）によって供給される、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）のインフライト並び替えを提供するように構成される。結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）は、この例では１９４（０）、１９４（１）、．．．、および１９４（Ｘ）である、「Ｘ＋１」個の、結果として生じる出力ベクトルデータサンプル１９４から構成される。たとえば、並び替えは、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前の、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）のインターリービングを含む可能性がある。
【０１３３】
[00178]図２３に示され、下記でより詳細に説明されるように、並び替え回路１９６（０）〜１９６（Ｘ）は、ベクトルデータレーン１００（０）〜１００（Ｘ）の各々の中の実行ユニット８４（０）〜８４（Ｘ）とベクトルデータファイル８２（０）〜８２（Ｘ）との間の出力データフローパス９８（０）〜９８（Ｘ）内に設けられる。並び替え回路１９６（０）〜１９６（Ｘ）は、出力データフローパス９８（０）〜９８（Ｘ）内の並び替えられた、結果として生じる出力ベクトルデータサンプルセット１９４Ｒ（０）〜１９４Ｒ（Ｘ）として、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）の並び替えを提供するために、実行されるべきベクトル命令に従うプログラミングに基づいて構成される。図２３のＶＰＥ２２（４）における、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）のインフライト並び替えは、実行ユニット８４（０）〜８４（Ｘ）によって供給された、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）が、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前に、並び替えられた、結果として生じる出力ベクトルデータサンプルセット１９４Ｒ（０）〜１９４Ｒ（Ｘ）として並び替えられることを意味する。このようにして、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）は、並び替えられた、結果として生じる出力ベクトルデータサンプルセット１９４Ｒ（０）〜１９４Ｒ（Ｘ）として、並び替えられたフォーマットでベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される。非限定的な例として、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）の並び替えは、ベクトルデータファイル８２（０）〜８２（Ｘ）に並び替えられた、結果として生じる出力ベクトルデータサンプルセット１９４Ｒ（０）〜１９４Ｒ（Ｘ）として記憶されるべき、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）のインターリービングまたはデインターリービングを含む場合がある。
【０１３４】
[00179]このように、出力データフローパス９８（０）〜９８（Ｘ）内に設けられた並び替え回路１９６（０）〜１９６（Ｘ）により、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）は、最初にベクトルデータファイル８２（０）〜８２（Ｘ）に記憶され、次いでベクトルデータファイル８２（０）〜８２（Ｘ）からフェッチされ、並び替えられ、ベクトルデータファイル８２（０）〜８２（Ｘ）に再記憶される必要がない。結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）は、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前に並び替えられる。このようにして、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）は、実行ユニット８４（０）〜８４（Ｘ）内で実行されるべき次のベクトル処理動作を遅延させる可能性がある、さらなる後処理ステップを必要とせずに、ベクトルデータファイル８２（０）〜８２（Ｘ）に並び替えられたフォーマットで記憶される。したがって、ＶＰＥ２２（４）内のデータフローパスの効率は、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）の並び替えによって制限されない。実行ユニット８４（０）〜８４（Ｘ）における次のベクトル処理は、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）がベクトルデータファイル８２（０）〜８２（Ｘ）に並び替えられた、結果として生じる出力ベクトルデータサンプルセット１９４Ｒ（０）〜１９４Ｒ（Ｘ）として並び替えられたフォーマットで記憶されるべきときに、データフローの制限ではなく、コンピュータリソースのみによって制限される。
【０１３５】
[00180]この例では、図２３に示されたように、並び替え回路１９６（０）〜１９６（Ｘ）を含むＶＰＥ２２（４）はまた、プライマリタップ付き遅延線７８（０）および／またはシャドウタップ付き遅延線７８（１）をオプションとして含むことができる。タップ付き遅延線７８（０）、７８（１）の動作は、ＶＰＥ２２（１）およびＶＰＥ２２（２）に関して上記で前述された。上記で前に説明されたように、タップ付き遅延線７８（０）、７８（１）は、実行ユニット８４（０）〜８４（Ｘ）に供給されるべきシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を必要とするベクトル処理動作に利用される場合がある。同様に、図４、図１１、および図１９のＶＰＥ２２（１）〜２２（３）内に設けられた共通構成要素が、図２３のＶＰＥ２２（４）内に設けられることに留意されたい。共通構成要素は、共通要素番号とともに図２３のＶＰＥ２２（４）において示される。ＶＰＥ２２（１）〜２２（３）に関する上記これらの共通構成要素の前の記載および説明は、図２３のＶＰＥ２２（４）にも適用可能であり、したがってここでは再び記載されない。
【０１３６】
[00181]引き続き図２３を参照すると、より具体的には、並び替え回路１９６（０）〜１９６（Ｘ）は、出力データフローパス９８（０）〜９８（Ｘ）上の並び替え回路入力１９８（０）〜１９８（Ｘ）上で、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）を受信するように構成される。並び替え回路１９６（０）〜１９６（Ｘ）は、並び替えられた、結果として生じる出力ベクトルデータサンプルセット１９４Ｒ（０）〜１９４Ｒ（Ｘ）を供給するために、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）を並び替えるように構成される。並び替え回路１９６（０）〜１９６（Ｘ）は、記憶用にベクトルデータファイル８２（０）〜８２（Ｘ）に供給されるために、出力データフローパス９８（０）〜９８（Ｘ）内の並び替え回路出力２００（０）〜２００（Ｘ）上に並び替えられた、結果として生じる出力ベクトルデータサンプルセット１９４Ｒ（０）〜１９４Ｒ（Ｘ）を供給するように構成される。
【０１３７】
[00182]この実施形態における出力データフローパス９８（０）〜９８（Ｘ）内のベクトルデータファイル８２（０）〜８２（Ｘ）に並び替えられた、結果として生じる出力ベクトルデータサンプルセット１９４Ｒ（０）〜１９４Ｒ（Ｘ）を供給するための図２３のＶＰＥ２２（４）のさらなる詳細および特徴のさらなる説明が次に記載される。この関連で、図２４は、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）の並び替えを必要とする例示的なベクトル命令に従って、並び替え回路１９６（０）〜１９６（Ｘ）を利用する図２３のＶＰＥ２２（４）において実行され得るベクトル処理動作２０２から得られた、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）の例示的な並び替えを示すフローチャートである。
【０１３８】
[00183]図２３と図２４とを参照すると、ベクトル命令に従うベクトル処理動作２０２に従って処理されるべき入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、ベクトルデータファイル８２（０）〜８２（Ｘ）からフェッチされ、入力データフローパス８０（０）〜８０（Ｘ）内に供給される（図２４のブロック２０４）。たとえば、ベクトル処理動作２０２は、実行されるべきベクトル命令に従って必要とされる任意のベクトル処理動作を含むことができる。上述のフィルタ、相関、およびフォーマット変換のベクトル処理動作を含む非限定的な例。ベクトル処理動作２０２のための入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅に応じて、ベクトル命令のプログラミングに従うベクトル処理動作２０２を提供するために、図２３のＶＰＥ２２（４）内のベクトルデータレーン１００（０）〜１００（Ｘ）の１つ、いくつか、またはすべてが利用され得る。ベクトルデータファイル８２（０）〜８２（Ｘ）の幅全体が必要な場合、すべてのベクトルデータレーン１００（０）〜１００（Ｘ）がベクトル処理動作２０２に利用され得る。ベクトル処理動作２０２は、ベクトルデータレーン１００（０）〜１００（Ｘ）のサブセットを必要とするにすぎない場合がある。これは、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅がすべてのベクトルデータファイル８２（０）〜８２（Ｘ）の幅よりも小さいからであり得るし、ここで、ベクトル処理動作２０２と並列に実行されるべき他のベクトル処理動作にさらなるベクトルデータレーン１００を利用することが望ましい。
【０１３９】
[00184]引き続き図２３と図２４とを参照すると、フェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、実行ユニット８４（０）〜８４（Ｘ）にある入力データフローパス８０（０）〜８０（Ｘ）から受信される（図２４のブロック２０６）。実行ユニット８４（０）〜８４（Ｘ）が、ベクトル命令に従って提供されたベクトル処理動作２０２に従って、受信された入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）に対してベクトル処理を実行する（図２４のブロック２０８）。非限定的な例として、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）は、場合によっては、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）のシフトを伴う実行ユニット８４（０）〜８４（Ｘ）によって実行されるベクトル処理動作２０２の各処理ステージの間のベクトル処理動作２０２の実行中にシフトされるべき入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）として、プライマリタップ付き遅延線７８（０）の中にロードされる場合がある。前に説明されたように、次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）は、場合によっては、実行ユニット８４（１）〜８４（Ｘ）によって処理されるべき次の入力ベクトルデータサンプルセット８６Ｎ（０）〜８６Ｎ（Ｘ）として、シャドウタップ付き遅延線７８（１）の中にロードされる場合もある。上記で前に説明されたように、タップ付き遅延線７８の目的は、シフトされた入力ベクトルデータサンプル８６に対して演算するベクトル処理動作２０２の動作の間に、実行ユニット８４（０）〜８４（Ｘ）に供給されるべきシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）に、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）をシフトすることである。
【０１４０】
[00185]引き続き図２３と図２４とを参照すると、実行ユニット８４（０）〜８４（Ｘ）は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を使用して、乗算および／または累算を提供するように構成される場合がある。タップ付き遅延線７８がベクトル処理動作２０２の間にフォーマット変換された入力ベクトルデータサンプルセット８６Ｆ（０）〜８６Ｆ（Ｘ）をシフトするために利用される場合、実行ユニット８４（０）〜８４（Ｘ）は、例によって前述されたように、ベクトル処理動作２０２が完了するまで、ベクトル処理動作２０２の各処理ステージの間にシフトされた入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）を受信することができる。ベクトル処理動作２０２が完了すると、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）、またはシフトされフォーマット変換された入力ベクトルデータサンプルセット８６Ｓ（０）〜８６Ｓ（Ｘ）のベクトル処理に基づく、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）が、出力データフローパス９８（０）〜９８（Ｘ）内に供給される。
【０１４１】
[00186]引き続き図２３と図２４とを参照すると、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）がベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前に、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）は、実行ユニット８４（０）〜８４（Ｘ）とベクトルデータファイル８２（０）〜８２（Ｘ）との間に設けられた出力データフローパス９８（０）〜９８（Ｘ）内に設けられた並び替え回路１９６（０）〜１９６（Ｘ）に供給される。並び替え回路１９６（０）〜１９６（Ｘ）は、実行されているベクトル命令に従って、および下記でより詳細に説明されるように、ベクトル命令がベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されるべき、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）の並び替えを要求する場合、出力データフローパス９８（０）〜９８（Ｘ）に含まれるようにプログラム可能である。結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）がベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されることなく、並び替え回路１９６（０）〜１９６（Ｘ）が、実行されているベクトル命令に従うプログラミングにおいて提供される並び替えに従って、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）を並び替える（図２４のブロック２１０）。このようにして、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）は、それにより実行ユニット８４（０）〜８４（Ｘ）において遅延をもたらす、最初にベクトルデータファイル８２（０）〜８２（Ｘ）に記憶され、再フェッチされ、後処理動作において並び替えられ、ベクトルデータファイル８２（０）〜８２（Ｘ）に並び替えられたフォーマットで記憶される必要がない。結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）が、並び替え後処理を必要とせずに、ベクトルデータファイル８２（０）〜８２（Ｘ）に並び替えられた、結果として生じる出力ベクトルデータサンプルセット１９４Ｒ（０）〜１９４Ｒ（Ｘ）として記憶される（図２４のブロック２１２）。たとえば、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）は、並び替え回路１９６（０）〜１９６（Ｘ）によって並び替えられる前に、図１８Ａおよび図１８Ｂにおいて提供されたフォーマットのようなフォーマットで現れる場合がある。
【０１４２】
[00187]次に図２５に関して、並び替え回路１９６（０）〜１９６（Ｘ）の一例が記載される。ベクトルデータレーン１００（０）イズプロバイデッド内に設けられた並び替え回路１９６（０）の１つの事例のために、並び替え回路１９６（０）〜１９６（Ｘ）の内部構成要素の例示的な詳細が図２５において提供されるが、それは並び替え回路１９６（１）〜１９６（Ｘ）にも適用可能である。例として図２５における並び替え回路１９６（０）を取り上げると、この例における並び替え回路１９６（０）は、並び替えられた、結果として生じる出力ベクトルデータサンプル１９４Ｒ（０）を供給するために、ベクトルデータレーン１００（０）内の出力データフローパス９８（０）内で、実行ユニット８４（０）によって供給された、結果として生じる出力ベクトルデータサンプル１９４（０）を並び替えるように構成される。この関連で、この例ではマルチプレクサの形態で設けられた４つの出力ベクトルデータサンプル選択器２１４（３）〜２１４（０）がこの例において提供され、それらは、各々８ビット幅のこの例では４つの９６（０）（３）〜９６（０）（０）である、実行ユニット出力９６（０）のビット幅に従って配置される。各出力ベクトルデータサンプル選択器２１４（３）〜２１４（０）は、割り当てられた実行ユニット出力９６（０）（３）〜９６（０）（０）内の、結果として生じる出力ベクトルデータサンプル１９４（０）の部分、または割り当てられた実行ユニット出力９６（０）（３）〜９６（０）（０）に隣接する実行ユニット出力９６からの、結果として生じるシフト出力ベクトルデータサンプル１９４（０）の部分のいずれかを選択するように構成される。
【０１４３】
[00188]たとえば、実行ユニット出力９６（０）（３）〜９６（０）（０）が、１６ビット符号付き複素数フォーマット、実数［３１：２４］、実数［２３：１６］、虚数［１５：８］、虚数［７：０］で、結果として生じる出力ベクトルデータサンプル１９４（０）を供給し、所望の並び替えられた（たとえば、インターリーブされた）フォーマットが、実行されるべきベクトル命令に従って実数［３１：２４］、虚数［２３：１６］、実数［１５：８］、虚数［７：０］である場合、出力ベクトルデータサンプル選択器２１４（３）〜２１４（０）の選択は以下のようであるはずである。出力ベクトルデータサンプル選択器２１４（３）は、出力データフローパス９８（０）（３）上で供給するために、実行ユニット出力９６（０）（３）から、結果として生じる出力ベクトルデータサンプル１９４（０）（３）を選択するはずである。しかしながら、出力ベクトルデータサンプル選択器２１４（２）は、出力データフローパス９８（０）（２）上で供給するために、実行ユニット出力９６（０）（１）上の、結果として生じる出力ベクトルデータサンプル１９４（０）（１）の部分を選択するはずである。これにより、並び替えられた、結果として生じる出力ベクトルデータサンプル１９４Ｒ（０）の並び替えられた、結果として生じる出力ベクトルデータサンプル１９４Ｒ（０）（３）、１９４Ｒ（０）（２）として、隣接する出力データフローパス９８（０）（３）、９８（０）（２）内の、結果として生じるシフト出力ベクトルデータサンプル１９４（０）（すなわち、実数［３１：２４］、虚数［２３：１６］）のインターリーブされた実数部分がもたらされるはずである。同様に、出力ベクトルデータサンプル選択器２１４（０）は、出力データフローパス９８（０）（０）内で供給するために、実行ユニット出力９６（０）（０）から、結果として生じる出力ベクトルデータサンプル１９４（０）（０）を選択するはずである。しかしながら、出力ベクトルデータサンプル選択器２１４（１）は、出力データフローパス９８（０）（１）上で供給するために、実行ユニット出力９６（０）（２）上の、結果として生じる出力ベクトルデータサンプル１９４（０）（２）を選択するはずである。これにより、並び替えられた、結果として生じる出力ベクトルデータサンプル１９４Ｒ（０）の並び替えられた、結果として生じる出力ベクトルデータサンプル１９４Ｒ（０）（１）、１９４Ｒ（０）（０）として、隣接する出力データフローパス９８（０）（１）、９８（０）（０）内で並び替えられ、インターリーブされた、結果として生じる出力ベクトルデータサンプル１９４（０）（２）、１９４（０）（０）（すなわち、実数［１５：８］、虚数［７：０］）がもたらされるはずである。同様にマルチプレクサの形態で設けられた出力ベクトルデータサンプル選択器２１６（１）、２１６（０）は、図２５に示されたように、割り当てられていない、隣接しない実行ユニット出力９６（０）（３）〜９６（０）（０）からの、結果として生じる出力ベクトルデータサンプル１９４（０）（３）〜１９４（０）（０）の間を選択する能力を提供する。
【０１４４】
[00189]引き続き図２３と図２５とを参照すると、並び替え回路１９６（０）〜１９６（Ｘ）は、実行されるべきベクトル命令に従って、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）を並び替えないように構成または再構成されるようにプログラム可能であるものとして提供される可能性がある。この例では、並び替え回路１９６（０）〜１９６（Ｘ）は、形成されたいかなる並び替え動作もなしに、並び替え回路１９６（０）〜１９６（Ｘ）に直接流れる出力データフローパス９８（０）〜９８（Ｘ）を提供するようにプログラムされる場合がある。上記で前に説明され、図２２に示されたように、出力ソースデータ（たとえば、図２３のＶＰＥ２２（４）内の、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ））が、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されるとき、ＳＣ１６フォーマットで記憶されるべきか、またはＳＣ１６フォーマットからＳＣ８フォーマットに変換され並び替えられるべきかを示すために、非限定的な例として、ベクトル命令のビット［１８］にチャート１８２内の出力データフォーマットフィールド１９０（ＤＥＳＴ＿ＦＭＴ）が設けられ得る。
【０１４５】
[00190]この関連で、図２５のプログラム可能な並び替えデータパス構成入力２１８（０）は、出力データフローパス９８（０）内の、結果として生じる出力ベクトルデータサンプル１９４（０）（３）〜１９４（０）（０）を並び替えるか、または並び替えないように、並び替え回路１９６（０）をプログラムするために、並び替え回路１９６（０）に供給され得る。プログラム可能な並び替えデータパス構成入力２１８（１）〜２１８（Ｘ）（図示せず）は、それぞれ、出力データフローパス９８（１）〜９８（Ｘ）内の、結果として生じる出力ベクトルデータサンプルセット１９４（１）〜１９４（Ｘ）を並び替えるか、または並び替えないように、並び替え回路１９６（１）〜１９６（Ｘ）をプログラムするために、並び替え回路１９６（１）〜１９６（Ｘ）に同様に供給され得る。このようにして、並び替え回路１９６（０）〜１９６（Ｘ）は、ベクトル命令が実行されるべきそのような処理を提供しない場合、結果として生じる出力ベクトルデータサンプルセット１９４（０）〜１９４（Ｘ）を並び替えないようにプログラムされ得る。プログラム可能な並び替えデータパス構成入力２１８（０）〜２１８（Ｘ）は、ＶＰＥ２２（４）によるベクトル処理において柔軟性を提供するように、ベクトル命令ごとに構成および再構成され得る。たとえば、プログラム可能な並び替えデータパス構成入力２１８（０）〜２１８（Ｘ）は、必要な場合実行ユニット８４（０）〜８４（Ｘ）を十分に利用して、必要に応じて並び替えを提供するように、ベクトル命令のクロックサイクルごとに、必要な場合クロックサイクルごとに、構成および再構成され得る。
【０１４６】
[00191]実行ユニット８４（０）〜８４（Ｘ）において実行されるべき次のベクトル処理動作を遅延させる可能性がある、さらなる後処理ステップを必要とせずに、実行ユニット８４（０）〜８４（Ｘ）からの、結果として生じる出力ベクトルデータサンプルセットのインフライト処理を伴う、他のベクトル処理動作も提供され得る。たとえば、可変長の拡散信号データシーケンスに従ってチップシーケンスの逆拡散を必要とするＣＤＭＡワイヤレスベースバンド動作が、インフライトベクトル処理から恩恵を受ける場合がある。
【０１４７】
[00192]たとえば、ＣＤＭＡを使用して変調され得るデータ信号２２０が図２６Ａにおいて示される。データ信号２２０は２Ｔの周期を有する。図２６Ａに示されたように、データ信号２２０は、この例ではデータシーケンス１０１０を表し、ここで、高信号レベルは論理「１」を表し、低信号レベルは論理「０」を表す。ＣＤＭＡ変調において、データ信号２２０は、図２６Ｂのチップシーケンス２２２などのチップシーケンス２２２によって拡張され、それは擬似ランダムコードであり得る。この例では、チップシーケンス２２２は、この例ではデータ信号２２０のサンプルごとに１０チップの拡散率または拡散係数を有するチップシーケンス２２２を提供するために、データ信号２２０の周期の１０分の１の大きさである周期を有する。この例では、データ信号２２０を拡散するために、データ信号２２０は、図２６Ｃに示されたように、拡散送信データ信号２２４を供給するために、チップシーケンス２２２と排他的論理和（すなわち、ＸＯＲ）される。拡散送信データ信号２２４とともに同じ帯域幅で送信される他のユーザ向けの他のデータ信号は、互いに直交する他のチップシーケンスとチップシーケンス２２２とを用いて拡散される。このようにして、元のデータ信号２２０が復元されるべきとき、拡散送信データ信号２２４は、図１１〜図１６に関して上記で前述されたように、シーケンス番号と相関される。チップシーケンス２２２の場合のように、シーケンス番号と拡散送信データ信号２２４との間に高相関が存在する場合、元のデータ信号２２０は、高相関シーケンス番号に関連するチップシーケンスを使用して復元され得る。拡散送信データ信号２２４は、図２６Ｄにおける復元されたデータ信号２２６のように、元のデータ信号２２０を復元するために、この例ではチップシーケンス２２２である高相関チップシーケンスを用いて逆拡散される。
【０１４８】
[00193]図２６Ｃにおける拡散送信データ信号２２４の逆拡散は、高相関チップシーケンスを決定するために、図１１のＶＰＥ２２（２）に関して上述された相関ベクトル処理動作と同様に、拡散送信データ信号２２４と潜在的なチップシーケンスとの間の内積として、逆拡散ベクトル処理動作において実行され得る。拡散送信データ信号２２４は、図２６Ｄにおける復元されたデータ信号２２６を供給するために、元のデータ信号２２０をＣＤＭＡ変調するために使用されていると決定されたチップシーケンス２２２を用いて逆拡散され得る。
【０１４９】
[00194]ＣＤＭＡ処理動作を含むベクトルプロセッサでは、ベクトルプロセッサは、実行ユニットから出力され、ベクトルデータメモリに記憶された後に拡散信号ベクトルデータシーケンスの逆拡散を実行する回路を含むことができる。この関連で、ベクトルデータメモリに記憶された拡散信号ベクトルデータシーケンスは、後処理動作においてベクトルデータメモリからフェッチされ、元のデータ信号を復元するために相関拡散コードシーケンスまたはチップシーケンスを用いて逆拡散される。拡散前の元のデータサンプルである逆拡散ベクトルデータシーケンスは、ベクトルデータメモリに戻されて記憶される。この後処理動作は、実行ユニットによる次のベクトル動作処理を遅延させる可能性があり、実行ユニット内のコンピュータ構成要素が過少利用される原因になる。さらに、逆拡散されるべき拡散信号ベクトルデータシーケンスは実行ユニットからの異なるデータフローパスと交差するので、拡散コードシーケンスを使用する拡散信号ベクトルシーケンスの逆拡散は、並列化することが困難である。
【０１５０】
[00195]この問題に対処するために、下記で開示される実施形態では、ＶＰＥ内の実行ユニットとベクトルデータメモリとの間のデータフローパス内に設けられた逆拡散回路を含むＶＰＥが提供される。逆拡散回路は、出力ベクトルデータサンプルセットが実行ユニットからベクトルデータメモリに出力データフローパスを介して供給されている間のインフライトの実行ユニットからの出力ベクトルデータサンプルを使用して、拡散スペクトルシーケンスを逆拡散するように構成される。出力ベクトルデータサンプルセットのインフライト逆拡散は、実行ユニットによって供給された出力ベクトルデータサンプルセットが、ベクトルデータメモリに記憶される前に逆拡散されることを意味し、その結果、出力ベクトルデータサンプルセットは逆拡散されたフォーマットでベクトルデータメモリに記憶される。逆拡散された拡散スペクトルシーケンス（ＤＳＳＳ）は、実行ユニット内で実行されるべき次のベクトル処理動作を遅延させる可能性がある、さらなる後処理ステップを必要とせずに、ベクトルデータメモリに逆拡散された形式で記憶され得る。したがって、ＶＰＥ内のデータフローパスの効率は、拡散スペクトルシーケンスの逆拡散によって制限されない場合がある。逆拡散された拡散スペクトルシーケンスがベクトルデータメモリに記憶されるとき、実行ユニット内の次のベクトル処理は、データフローの制限ではなく、コンピュータリソースのみによって制限される。
【０１５１】
[00196]この関連で、図２７は、図２のＶＰＥ２２として提供され得る別の例示的なＶＰＥ２２（５）の概略図である。下記でより詳細に記載されるように、図２７のＶＰＥ２２（５）は、ベクトルデータサンプルの再フェッチが除去または低減され、電力消費が低減される、ＶＰＥ２２（５）内のベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されるべき、ベクトル処理動作のためのコードシーケンスを用いて実行ユニット８４（０）〜８４（Ｘ）によって供給される、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）のインフライト逆拡散を提供するように構成される。結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）は、この例では２２８（０）、２２８（１）、．．．、および２２８（Ｘ）である、「Ｘ＋１」個の入力の結果として生じる出力ベクトルデータサンプル２２８から構成される。コードシーケンスは、非限定的な例として、ＣＤＭＡ逆拡散ベクトル処理動作のための拡散スペクトルＣＤＭＡチップシーケンスであり得る。図２７のＶＰＥ２２（５）では、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）は、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前にコードシーケンスを用いて逆拡散され得る。
【０１５２】
[00197]図２７に示され、下記でより詳細に説明されるように、逆拡散回路２３０は、ベクトルデータレーン１００（０）〜１００（Ｘ）の各々の中の実行ユニット８４（０）〜８４（Ｘ）とベクトルデータファイル８２（０）〜８２（Ｘ）との間の出力データフローパス９８（０）〜９８（Ｘ）内に設けられる。逆拡散回路２３０は、相関ベクトル処理動作に関して図１１〜図１６において上記で前述されたように、シーケンス番号発生器１３４によって生成された基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）として供給されるコードシーケンスを用いて、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）のインフライト逆拡散を提供するために、実行されるべきベクトル命令に従うプログラミングに基づいて構成される。逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）は、出力データフローパス９８（０）〜９８（Ｘ）内の逆拡散回路２３０によって供給される。逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）は、この例では２２９（０）、２２９（１）、．．．、および２２９（Ｚ）である、「Ｚ＋１」個の逆拡散された、結果として生じる出力ベクトルデータサンプル２２９から構成される。図２７のＶＰＥ２２（５）における、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）のインフライト逆拡散は、実行ユニット８４（０）〜８４（Ｘ）によって供給された、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）が、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前に、結果として生じるベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）内でコードシーケンスを用いて逆拡散されることを意味する。このようにして、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）は、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｘ）として逆拡散された形式でベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される。
【０１５３】
[00198]このように、出力データフローパス９８（０）〜９８（Ｘ）内に設けられた逆拡散回路２３０により、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）は、最初にベクトルデータファイル８２（０）〜８２（Ｘ）に記憶され、次いでベクトルデータファイル８２（０）〜８２（Ｘ）からフェッチされ、逆拡散され、ベクトルデータファイル８２（０）〜８２（Ｘ）に逆拡散された形式で再記憶される必要がない。結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）は、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前に逆拡散される。このようにして、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）は、実行ユニット８４（０）〜８４（Ｘ）において実行されるべき次のベクトル処理動作を遅延させる可能性がある、さらなる後処理ステップを必要とせずに、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される。したがって、ＶＰＥ２２（５）内のデータフローパスの効率は、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の逆拡散によって制限されない。実行ユニット８４（０）〜８４（Ｘ）における次のベクトル処理は、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）がベクトルデータファイル８２（０）〜８２（Ｘ）に逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）として逆拡散された形式で記憶されるときに、データフローの制限ではなく、コンピュータリソースのみによって制限される。
【０１５４】
[00199]さらに、実行ユニット８４（０）〜８４（Ｘ）とベクトルデータファイル８２（０）〜８２（Ｘ）との間の出力データフローパス９８（０）〜９８（Ｘ）内に逆拡散回路２３０を設けることによって、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）は、ベクトルデータファイル８２（０）〜８２（Ｘ）と実行ユニット８４（０）〜８４（Ｘ）との間の入力データフローパス８０（０）〜８０（Ｘ）内のベクトルデータレーン１００と交差する必要がない。異なるベクトルデータレーン１００の間の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内の入力ベクトルデータサンプル８６の逆拡散のためのデータフローパスを設けると、ルーティングの複雑さが増大するはずである。結果として、実行ユニット８４（０）〜８４（Ｘ）は、入力データフローパス８０（０）〜８０（Ｘ）において逆拡散動作が実行されている間、過少利用される可能性がある。同様に、上記で説明されたように、入力データフローパス８０（０）〜８０（Ｘ）における、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の逆拡散は、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）が最初に図２７のＶＰＥ２２（５）内のベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されることを必要とするはずであり、それにより、再フェッチおよび逆拡散されるときの電力消費が増大し、および／または逆拡散動作が実行されている間に遅延する可能性がある実行ユニット８４（０）〜８４（Ｘ）の過少利用のリスクがある。
【０１５５】
[00200]図４、図１１、図１９、および図２３のＶＰＥ２２（１）〜２２（４）内に設けられた共通構成要素が、図２７のＶＰＥ２２（５）内に設けられることに留意されたい。共通構成要素は、共通要素番号とともに図２７のＶＰＥ２２（５）において示される。ＶＰＥ２２（１）〜２２（４）内の上記これらの共通構成要素の前の記載および説明は、図２７のＶＰＥ２２（５）にも適用可能であり、したがってここでは再び記載されない。
【０１５６】
[00201]引き続き図２７を参照すると、より具体的には、逆拡散回路２３０は、出力データフローパス９８（０）〜９８（Ｘ）上の逆拡散回路入力２３２（０）〜２３２（Ｘ）上で、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）を受信するように構成される。逆拡散回路２３０は、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）を供給するために、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）を逆拡散するように構成される。下記でより詳細に説明されるように、逆拡散された、結果として生じる出力ベクトルデータサンプル２２９の数は、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）内では「Ｚ＋１」である。逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）内の逆拡散された、結果として生じる出力ベクトルデータサンプル２２９の数は、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）を逆拡散するために使用される拡散係数に依存する。逆拡散回路２３０は、記憶用にベクトルデータファイル８２（０）〜８２（Ｘ）に供給されるために、出力データフローパス９８（０）〜９８（Ｘ）内の逆拡散回路出力２３４（０）〜２３４（Ｘ）上に逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）を供給するように構成される。
【０１５７】
[00202]この実施形態における出力データフローパス９８（０）〜９８（Ｘ）内のベクトルデータファイル８２（０）〜８２（Ｘ）に逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）を供給するための図２７のＶＰＥ２２（５）のさらなる詳細および特徴のさらなる説明が次に記載される。この関連で、図２８は、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の逆拡散を必要とする例示的なベクトル命令に従って、逆拡散回路２３０を利用する図２７のＶＰＥ２２（５）において実行され得る逆拡散ベクトル処理動作２３６から得られた結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の例示的な逆拡散を示すフローチャートである。
【０１５８】
[00203]図２７と図２８とを参照すると、ベクトル命令に従う逆拡散ベクトル処理動作２３６に従って処理されるべき入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、ベクトルデータファイル８２（０）〜８２（Ｘ）からフェッチされ、入力データフローパス８０（０）〜８０（Ｘ）内に供給される（図２８のブロック２３８）。結果として生じる逆拡散ベクトル処理動作２３６のための、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の幅に応じて、ベクトル命令のプログラミングに従う逆拡散ベクトル処理動作２３６を提供するために、図２７のＶＰＥ２２（５）内のベクトルデータレーン１００（０）〜１００（Ｘ）の１つ、いくつか、またはすべてが利用され得る。逆拡散ベクトル処理動作２３６が、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の中のすべての、結果として生じる出力ベクトルデータサンプル２２８の逆拡散を実行することを要する場合、実行ユニット８４（０）〜８４（Ｘ）からの出力データフローパス９８（０）〜９８（Ｘ）内のすべてのベクトルデータレーン１００（０）〜１００（Ｘ）が逆拡散ベクトル処理動作２３６に利用され得る。代替として、逆拡散ベクトル処理動作２３６は、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の中の、結果として生じる出力ベクトルデータサンプル２２８のサブセットを逆拡散することのみを要する場合があり、したがって、結果として生じる出力ベクトルデータサンプル２２８のサブセットに対応する出力データフローパス９８内のベクトルデータレーン１００のみを要する。
【０１５９】
[00204]引き続き図２７と図２８とを参照すると、逆拡散ベクトル処理動作が図２７のＶＰＥ２２（５）内の逆拡散回路２３０によって実行されるより前に、フェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、実行ユニット８４（０）〜８４（Ｘ）にある入力データフローパス８０（０）〜８０（Ｘ）から受信される（図２８のブロック２４０）。実行ユニット８４（０）〜８４（Ｘ）が、ベクトル命令に従って提供されたベクトル処理動作に従って、受信された入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）に対して１つまたは複数のベクトル処理動作を実行する（図２８のブロック２４２）。たとえば、実行ユニット８４（０）〜８４（Ｘ）は、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）を供給するために、ベクトル処理動作を実行するための、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）と、基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）内のコードシーケンスとを使用して、乗算および／または累算を提供する。たとえば、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）は、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）のベクトル処理に基づく場合があり、基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）は、図２７のＶＰＥ２２（５）の出力データフローパス９８（０）〜９８（Ｘ）内に供給される。
【０１６０】
[00205]引き続き図２７と図２８とを参照すると、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）を逆拡散することが望ましい場合、逆拡散ベクトル処理動作２３６は、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）がベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前に実行され得る。この例では、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）は、図２７のＶＰＥ２２（５）内の実行ユニット８４（０）〜８４（Ｘ）とベクトルデータファイル８２（０）〜８２（Ｘ）との間に設けられた出力データフローパス９８（０）〜９８（Ｘ）内に設けられた逆拡散回路２３０に供給される。逆拡散回路２３０は、実行されているベクトル命令に従って、およびベクトル命令がベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されるべき、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の逆拡散を要求する場合、出力データフローパス９８（０）〜９８（Ｘ）内で、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）を選択的に逆拡散するようにプログラム可能である。結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）がベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されることなく、逆拡散回路２３０が、実行されているベクトル命令に従う逆拡散プログラミングに従って、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）を逆拡散する（図２８のブロック２４４）。
【０１６１】
[00206]このようにして、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）は、それにより実行ユニット８４（０）〜８４（Ｘ）において遅延をもたらす、最初にベクトルデータファイル８２（０）〜８２（Ｘ）に記憶され、再フェッチされ、後処理動作において逆拡散され、ベクトルデータファイル８２（０）〜８２（Ｘ）に逆拡散されたフォーマットで記憶される必要がない。結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）が、逆拡散後処理を必要とせずに、ベクトルデータファイル８２（０）〜８２（Ｘ）に逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）として記憶される（図２８のブロック２４６）。
【０１６２】
[00207]図２９は、図２７のＶＰＥ２２（５）内の実行ユニット８４（０）〜８４（Ｘ）とベクトルデータファイル８２（０）〜８２（Ｘ）との間の出力データフローパス９８（０）〜９８（Ｘ）内に設けられ得る、例示的な逆拡散回路２３０の概略図である。逆拡散回路２３０は、基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）内の反復コードシーケンスの様々な拡散係数に対して、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）を供給するために、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の逆拡散を提供するように構成される。結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）は、図２７に示されたように、実行ユニット出力９６（０）〜９６（Ｘ）から逆拡散回路２３０に供給される。結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の拡散係数は知られていない場合があるので、図２７のシーケンス番号発生器１３４によって生成された基準ベクトルデータサンプルセット１３０（０）〜１３０（Ｘ）内の反復シーケンス番号の様々な拡散係数を用いて、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）を逆拡散することが望ましい場合がある。
【０１６３】
[00208]たとえば、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）が３２個のサンプルを含んでいて、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）全体が４の拡散係数を想定して逆拡散された場合、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の逆拡散が実行された後、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）は、８個の逆拡散サンプル（すなわち、３２サンプル／４の拡散係数）を含んでいるはずである。しかしながら、この同じ例において、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）全体が８の拡散係数を想定して逆拡散された場合、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の逆拡散が実行された後、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）は、４個の逆拡散サンプル（すなわち、３２サンプル／８の拡散係数）を含んでいるはずである。
【０１６４】
[00209]このように、引き続き図２９を参照すると、逆拡散回路２３０は、異なる数の拡散係数に対して、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）を逆拡散するように構成される。この実施形態における逆拡散回路２３０は、１つのベクトル処理動作／１つのベクトル命令における様々な拡散係数に対して、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）を供給するように構成される。この関連で、逆拡散回路２３０は、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）を受信するために、実行ユニット出力９６（０）〜９６（Ｘ）に結合された加算器ツリー２４８を含んでいる。逆拡散回路２３０の加算器ツリー２４８は、それらのそれぞれのベクトルデータレーン１００（０）〜１００（Ｘ）内で、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の各サンプル２２８を受信するように構成される。加算器ツリー２４８内に第１の加算器ツリーレベル２４８（１）が設けられる。第１の加算器ツリーレベル２４８（１）は、４の拡散係数によって、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）内のサンプル２２８を拡散することができるように、加算器２５０（０）〜２５０（（（Ｘ＋１）＊２）−１）、２５０（７）から構成される。出力データフローパス９８（０）〜９８（Ｘ）から、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）をラッチするために、ラッチ２５１（０）〜２５１（Ｘ）が逆拡散回路２３０内に設けられる。
【０１６５】
[00210]たとえば、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）内の各サンプル２２８が３２ビット幅であり、２つの１６ビット複素数のベクトルデータ（すなわち、フォーマットＩ８Ｑ８に従う第１のベクトルデータおよびフォーマットＩ８Ｑ８に従う第２のベクトルデータ）から構成される場合、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）内の２つの、結果として生じる出力ベクトルデータサンプル２２８の中の４つのベクトルデータサンプルを、１つの逆拡散された、結果として生じる出力ベクトルデータサンプルの中に逆拡散するために、４の拡散係数が適用される可能性がある。たとえば、図２９に示されたように、加算器２５０（０）は、結果として生じる出力ベクトルデータサンプル２２８（０）と２２８（１）とを、それらのサンプルのための４の拡散係数によって逆拡散するように構成される。同じく、加算器２５０（１）は、結果として生じる出力ベクトルデータサンプル２２８（２）と２２８（３）とを、それらのサンプルのための４の拡散係数によって逆拡散するように構成される。加算器２５０（（（Ｘ＋１）／２）−１）、２５０（７）は、４の拡散係数を用いて、逆拡散ベクトルデータサンプルセット２５２（０）〜２５２（（（Ｘ＋１）／２）−１）、２５２（７）を供給するために、結果として生じる出力ベクトルデータサンプルセット２２８（Ｘ−１）と２２８（Ｘ）とを逆拡散するように構成される。加算器２５０（（（Ｘ＋１）／２）−１）、２５０（７）によって実行された逆拡散からの逆拡散ベクトルデータサンプルセット２５２（０）〜２５２（（（Ｘ＋１）／２）−１）、２５２（７）は、ラッチ２５５（０）〜２５５（（（Ｘ＋１）／２）−１）、２５５（７）の中にラッチされる。
【０１６６】
[00211]逆拡散ベクトル処理動作２３６が４の拡散係数による、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の逆拡散を必要とする場合、下記でより詳細に記載されるように、逆拡散ベクトルデータサンプルセット２５２（０）〜２５２（（（Ｘ＋１）／２）−１）、２５２（７）は、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）として供給され得るし、ここで、「Ｚ」は７である。しかしながら、逆拡散ベクトル処理動作２３６がより高い拡散係数（たとえば、８、１６、３２、６４、１２８、２５６）を要求する場合、逆拡散ベクトルデータサンプルセット２５２（０）〜２５２（（（Ｘ＋１）／２）−１）、２５２（７）は、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）として供給されない。逆拡散ベクトルデータサンプルセット２５２（０）〜２５２（（（Ｘ＋１）／２）−１）、２５２（７）は、加算器２５４（０）〜２５４（（（Ｘ＋１）／４）−１）、２５４（３）への第２の加算器ツリーレベル２４８（２）に供給される。この関連で、加算器２５４（０）は、それらのサンプルのための８の拡散係数を有する、結果として生じる逆拡散ベクトルデータサンプル２５６（０）を供給するために、逆拡散ベクトルデータサンプル２５２（０）および２５２（１）に対して逆拡散を実行するように構成される。同じく、加算器２５４（１）は、それらのサンプルのための８の拡散係数を有する、結果として生じる逆拡散ベクトルデータサンプル２５６（１）を供給するために、逆拡散ベクトルデータサンプル２５２（２）および２５２（３）に対して逆拡散を実行するように構成される。加算器２５４（（（Ｘ＋１）／４）−１）、２５４（３）は、８の拡散係数を有する、結果として生じる逆拡散ベクトルデータサンプル２５６（（（Ｘ＋１）／４）−１）、２５６（３）を供給するために、逆拡散ベクトルデータサンプルセット２５２（（（Ｘ＋１）／４）−２）、２５２（（（Ｘ＋１）／４）−１）、２５２（３）に対して逆拡散を実行するように構成される。加算器２５４（０）〜２５４（（（Ｘ＋１）／４）−１）、２５４（３）によって実行された逆拡散からの、結果として生じる逆拡散ベクトルデータサンプルセット２５６（０）〜２５６（（（Ｘ＋１）／４）−１）、２５６（３）は、ラッチ２５７（０）〜２５７（（（Ｘ＋１）／４）−１）、２５７（３）の中にラッチされる。
【０１６７】
[00212]引き続き図２９を参照すると、逆拡散ベクトル処理動作２３６が８の拡散係数による、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の逆拡散を必要とする場合、下記でより詳細に記載されるように、逆拡散ベクトルデータサンプルセット２５６（０）〜２５６（（（Ｘ＋１）／４）−１）、２５６（３）は、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）として供給され得るし、ここで、「Ｚ」は３である。しかしながら、逆拡散ベクトル処理動作２３６が８よりも高い拡散係数（たとえば、１６、３２、６４、１２８、２５６）を要求する場合、逆拡散ベクトルデータサンプルセット２５６（０）〜２５６（（（Ｘ＋１）／４）−１）、２５６（３）は、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）として供給されない。逆拡散ベクトルデータサンプルセット２５６（０）〜２５６（（（Ｘ＋１）／４）−１）、２５６（３）は、加算器２５８（０）〜２５８（（（Ｘ＋１）／８）−１）、２５８（１）への第３の加算器ツリーレベル２４８（３）に供給される。この関連で、加算器２５８（０）は、それらのサンプルのための１６の拡散係数を供給するために、逆拡散ベクトルデータサンプル２５６（０）および２５６（１）に対して逆拡散を実行するように構成される。同じく、加算器２５８（１）は、１６の拡散係数を有する逆拡散ベクトルデータサンプルセット２６０（０）〜２６０（（（Ｘ＋１）／８）−１）、２６０（１）を供給するために、逆拡散ベクトルデータサンプル２５６（２）および２５６（３）に対して逆拡散を実行するように構成される。加算器２５８（０）〜２５８（（（Ｘ＋１）／８）−１）、２５８（１）によって実行された逆拡散からの逆拡散ベクトルデータサンプルセット２６０（０）〜２６０（（（Ｘ＋１）／８）−１）、２６０（１）は、ラッチ２５９（０）〜２５９（（（Ｘ＋１）／８）−１）、２５９（２）の中にラッチされる。
【０１６８】
[00213]引き続き図２９を参照すると、逆拡散ベクトル処理動作２３６が１６の拡散係数による、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の逆拡散を必要とする場合、下記でより詳細に記載されるように、逆拡散ベクトルデータサンプルセット２６０（０）〜２６０（（（Ｘ＋１）／８）−１）、２５６（１）は、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）として供給され得るし、ここで、「Ｚ」は１である。しかしながら、逆拡散ベクトル処理動作２３６が１６よりも高い拡散係数（たとえば、３２、６４、１２８、２５６）を要求する場合、逆拡散ベクトルデータサンプルセット２６０（０）〜２６０（（（Ｘ＋１）／８）−１）、２６０（１）は、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）として供給されない。逆拡散ベクトルデータサンプルセット２６０（０）〜２６０（（（Ｘ＋１）／８）−１）、２６０（１）は、加算器２６２への第４の加算器ツリーレベル２４８（４）に供給される。この関連で、加算器２６２は、３２の拡散係数を有する逆拡散ベクトルデータサンプル２６４を供給するために、逆拡散ベクトルデータサンプル２６０（０）および２６０（１）に対して逆拡散を実行するように構成される。加算器２６２によって実行された逆拡散からの逆拡散ベクトルデータサンプル２６４は、ラッチ２６６および２６８の中にラッチされる。
【０１６９】
[00214]引き続き図２９を参照すると、逆拡散ベクトル処理動作２３６が３２の拡散係数による、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の逆拡散を必要とする場合、下記でより詳細に記載されるように、逆拡散ベクトルデータサンプル２６４は、逆拡散された、結果として生じる出力ベクトルデータサンプル２２９として供給され得る。しかしながら、逆拡散ベクトル処理動作２３６が３２よりも高い拡散係数（たとえば、６４、１２８、２５６）を要求する場合、逆拡散ベクトルデータサンプル２６４は、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９として供給されない。逆拡散ベクトルデータサンプル２６４は、ベクトルデータファイル８２に記憶される必要なしに、ラッチ２６８の中にラッチされたままである。上述されたように、３２の拡散係数を使用して逆拡散されるために、別の結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）は、さらなる処理サイクルにわたって、ラッチ２５１（０）〜２５１（Ｘ）の中にロードされる。結果として生じる逆拡散ベクトルデータサンプル２６４’は、６４の拡散係数を有する逆拡散ベクトルデータサンプル２７２を供給するために、第５の加算器ツリー２４８（５）内の加算器２７０により、前の逆拡散ベクトルデータサンプル２６４に加算される。選択器２７３は、３２の拡散係数を有する逆拡散ベクトルデータサンプル２６４、または６４の拡散係数を有する逆拡散ベクトルデータサンプル２６４’のどちらが、ラッチ２７４の中にラッチされる逆拡散ベクトルデータサンプル２７２としてラッチされるかを制御する。さらなる結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）をラッチし、さらなる結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）を逆拡散するこの同じプロセスは、必要な場合、６４よりも大きい拡散係数を達成するために実行され得る。逆拡散ベクトルデータサンプル２７２は、最終的に、逆拡散ベクトル処理動作２３６のための所望の拡散係数に従って、所望の逆拡散された、結果として生じる出力ベクトルデータサンプル２２９として、ラッチ２７４の中にラッチされる。
【０１７０】
[00215]引き続き図２９を参照すると、逆拡散ベクトル処理動作２３６においてどの拡散係数が要求されても、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）は、図２７のベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される必要がある。次に説明されるように、図２９の逆拡散回路２３０はまた、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）を形成するために、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）に対して逆拡散ベクトル処理動作２３６を実行する結果としてもたらされた逆拡散された、結果として生じる出力ベクトルデータサンプル２２９をラッチ２７６（０）〜２７６（Ｘ）の中にロードするように構成される。逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）は、記憶されるためにベクトルデータファイル８２（０）〜８２（Ｘ）に供給され得る。このようにして、逆拡散回路２３０によって作成された逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）を記憶するために、ベクトルデータファイル８２（０）〜８２（Ｘ）に対して１回の書込みが必要とされるにすぎない。図２９の逆拡散回路２３０内の加算器ツリー２４８（１）〜２４８（５）は、逆拡散ベクトル処理動作２３６においてどの拡散係数が要求されても、拡散係数４、８、１６、および３２のすべてに対して逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を生成することができる。代替として、所望の拡散係数に従って逆拡散ベクトル処理動作２３６を実行する必要がない加算器ツリー内の加算器は、無効にされ得るか、または０を加算するように構成され得る。しかしながら、これらの逆拡散された、結果として生じる出力ベクトルデータサンプル２２９のどれが記憶されるためにラッチ２７６（０）〜２７６（Ｘ）に供給されるかを決定するために、次に説明されるように、選択器２７８（０）〜２７８（（（Ｘ＋１）／４）−１）、２７８（３）が設けられる。
【０１７１】
[00216]この関連で、引き続き図２９を参照すると、選択器２７８（０）は、実行されている逆拡散ベクトル処理動作２３６に基づいて、それぞれ、加算器２５０（０）、２５４（０）、２５８（０）からの拡散係数４、８、および１６、ならびに加算器２６２、２７０からの拡散係数３２、６４、１２８、２５６のいずれかに対して、逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を選択することができる。選択器２７８（１）は、実行されている逆拡散ベクトル処理動作２３６に基づいて、それぞれ、加算器２５０（１）、２５４（１）、および２５８（１）からの拡散係数４、８、および１６に対して、逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を選択することができる。選択器２７８（２）は、実行されている逆拡散ベクトル処理動作２３６に基づいて、それぞれ、加算器２５０（２）および２５４（２）からの拡散係数４および８に対して、逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を選択することができる。選択器２７８（３）は、実行されている逆拡散ベクトル処理動作２３６に基づいて、それぞれ、加算器２５０（３）および２５４（３）からの拡散係数４および８に対して、逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を選択することができる。選択器２７８（４）は、実行されている逆拡散ベクトル処理動作２３６に基づいて、それぞれ、加算器ツリー２４８（１）および２４８（２）からの拡散係数４および８に対して、逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を選択することができる。８の拡散係数を供給することが選択器２７８（０）〜２７８（３）によって完全に満足され得るので、選択器は、加算器２５０（４）〜２５０（７）から供給され逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を制御するためには設けられない。
【０１７２】
[00217]引き続き図２９を参照すると、それぞれ、選択器２７８（０）〜２７８（（（Ｘ＋１）／４）−１）、２７８（３）および加算器２５０（４）〜２５０（（（Ｘ＋１）／２）−１）、２５０（７）によって選択され逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を受信するために、一連のデータスライサ２８０（０）〜２８０（（（Ｘ＋１）／２）−１）、２８０（７）が設けられる。データスライサ２８０（０）〜２８０（（（Ｘ＋１）／２）−１）、２８０（７）は、その受信され逆拡散された、結果として生じる出力ベクトルデータサンプル２２９が論理高レベル（たとえば、論理「１」）として特徴付けられるか、論理低レベル（たとえば、論理「０」）として特徴付けられるかを選択するように構成される。逆拡散された、結果として生じる出力ベクトルデータサンプル２２９は、次いで、クロスバー２８２への接続を介して、記憶されるためにラッチ２７６（０）〜２７６（Ｘ）の中の所望のラッチ２７６に転送される。クロスバー２８２は、様々なラッチ２７６（０）〜２７６（Ｘ）に、逆拡散ベクトル処理動作２３６に従って逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を供給する柔軟性を提供する。このようにして、逆拡散された、結果として生じる出力ベクトルデータサンプル２２９は、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前に、逆拡散ベクトル処理動作２３６の様々な繰返しの中で、ラッチ２７６（０）〜２７６（Ｘ）にスタックされ得る。たとえば、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）は、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前に、逆拡散ベクトル処理動作２３６の様々な繰返しの中で、ラッチ２７６（０）〜２７６（Ｘ）にスタックされ得る。このようにして、逆拡散された、結果として生じる出力ベクトルデータサンプルセット２２９（０）〜２２９（Ｚ）を記憶するためのベクトルデータファイル８２（０）〜８２（Ｘ）へのアクセスは、動作効率のために最小化され得る。
【０１７３】
[00218]たとえば、図２９に示されたように、クロスバー２８２に結合された選択器２８４（０）〜２８４（Ｘ）は、ラッチ２７６（０）〜２７６（Ｘ）のいずれかの中にデータスライサ２８０（０）からの逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を記憶するように制御され得る。クロスバー２８２に結合された選択器２８４（１）、２８４（３）、２８４（５）、２８４（７）、２８４（９）、２８４（１１）、２８４（１３）、２８４（１５）は、ラッチ２７６（１）、２７６（３）、２７６（５）、２７６（７）、２７６（９）、２７６（１１）、２７６（１３）、および２７６（１５）に記憶されるべきデータスライサ２８０（１）からの逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を記憶するように制御され得る。クロスバー２８２に結合された選択器２８４（２）、２８４（６）、２８４（１０）、２８４（１４）は、ラッチ２７６（２）、２７６（６）、２７６（１０）、および２７６（１４）にデータスライサ２８０（２）からの逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を記憶するように制御され得る。クロスバー２８２に結合された選択器２８４（３）、２８４（７）、２８４（１１）、２８４（１５）は、ラッチ２７６（３）、２７６（７）、２７６（１１）、および２７６（１５）にデータスライサ２８０（３）からの逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を記憶するように制御され得る。クロスバー２８２に結合された選択器２８４（４）および２８４（１２）は、ラッチ２７６（４）および２７６（１２）にデータスライサ２８０（４）からの逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を記憶するように制御され得る。クロスバー２８２に結合された選択器２８４（５）および２８４（１３）は、ラッチ２７６（５）および２７６（１３）にデータスライサ２８０（５）からの逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を記憶するように制御され得る。クロスバー２８２に結合された選択器２８４（６）および２８４（１４）は、ラッチ２７６（６）または２７６（１４）にデータスライサ２８０（６）からの逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を記憶するように制御され得る。クロスバー２８２に結合された選択器２８４（７）および２８４（１５）は、ラッチ２７６（７）または２７６（１５）にデータスライサ２８０（７）からの逆拡散された、結果として生じる出力ベクトルデータサンプル２２９を記憶するように制御され得る。
【０１７４】
[00219]引き続き図２９を参照すると、逆拡散回路２３０は、実行されるべきベクトル命令に従って、結果として生じる出力ベクトルデータサンプル２２８（０）〜２２８（Ｘ）に対して逆拡散動作を実行するか、または実行しないように構成されるようにプログラムされ得る。この関連で、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されるために、それぞれ、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）に対して逆拡散動作を実行するか、またはラッチ２７６（０）〜２７６（Ｘ）に、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）を単に供給するために、図２９の逆拡散構成入力２８６が逆拡散回路２３０に提供され得る。このようにして、逆拡散回路２３０は、ベクトル命令が実行されるべきそのような処理を提供しない場合、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）を逆拡散しないようにプログラムされ得る。逆拡散構成入力２８４は、図２７のＶＰＥ２２（５）によるベクトル処理において柔軟性を提供するように、ベクトル命令ごとに構成および再構成され得る。たとえば、逆拡散構成入力２８４は、必要な場合実行ユニット８４（０）〜８４（Ｘ）を十分に利用して、必要に応じて逆拡散を提供するように、ベクトル命令のクロックサイクルごとに、必要な場合クロックサイクルごとに、構成および再構成され得る。
【０１７５】
[00220]いくつかの他のワイヤレスベースバンド動作は、拡散スペクトルデータシーケンスの逆拡散以外の理由で前の処理動作から決定されたデータサンプルのマージングを必要とする。たとえば、ベクトルデータレーン１００（０）〜１００（Ｘ）によって提供された実行ユニット８４（０）〜８４（Ｘ）のためのデータフローパスよりも広い変化幅のベクトルデータサンプルを累算することが望ましい場合がある。別の例として、ベクトル処理動作において出力ベクトルデータのマージングを提供するために、様々な実行ユニット８４（０）〜８４（Ｘ）からの出力ベクトルデータサンプルのドット積乗算を提供することが望ましい場合がある。ＶＰＥ内のベクトルデータレーン１００（０）〜１００（Ｘ）は、マージされたベクトル処理動作を提供するために、ベクトルデータレーン１００（０）〜１００（Ｘ）と交差するためのベクトル内データパスを提供する複雑なルーティングを含む可能性がある。しかしながら、様々なベクトルデータレーンと交差してマージされるべき出力ベクトルデータにおける並列化は困難なので、これにより、複雑さが増大し、ＶＰＥの効率が低減される可能性がある。ベクトルプロセッサは、実行ユニットからベクトルデータメモリに記憶された出力ベクトルデータの後処理マージングを実行する回路を含む可能性がある。ベクトルデータメモリに記憶された後処理された出力ベクトルデータサンプルは、ベクトルデータメモリからフェッチされ、必要に応じてマージされ、ベクトルデータメモリに戻されて記憶される。しかしながら、この後処理により、ＶＰＥの次のベクトル処理動作が遅延し、実行ユニット内のコンピュータ構成要素が過少利用される原因になる可能性がある。
【０１７６】
[00221]たとえば、前述されたＶＰＥ内のベクトルデータファイル８２（０）、８２（１）内に供給された２つの入力ベクトルデータサンプル２９０（０）、２９０（１）が図３０に示される。これらの２つの入力ベクトルデータサンプル２９０（０）、２９０（１）を一緒に加算することが望ましい場合がある。この例では、２つの入力ベクトルデータサンプル２９０（０）、２９０（１）の和は「０ｘ１１２５０３１４Ｅ」であり、それはベクトルデータレーン１００（０）または１００（１）のいずれかよりも大きいデータ幅を有する。実行ユニット８４（０）、８４（１）が、ベクトルデータレーン１００（０）、１００（１）をまたぐ２つの実行ユニット８４（０）、８４（１）の間の桁上げ論理を提供することを含む、２つの入力ベクトルデータサンプル２９０（０）、２９０（１）一緒の和の実行を行うことが可能になるように、ベクトルデータレーン１００（０）、１００（１）の間のベクトルデータルーティングを提供するために、データフローパスがＶＰＥ２２内に設けられる可能性がある。マージされたベクトルデータサンプルのスカラー結果を供給するために、すべてのベクトルデータレーン１００（０）〜１００（Ｘ）と交差する能力が必要となる場合があり、それにより、データフローパス内の複雑さがさらに増大する場合がある。しかしながら、上記で説明されたように、これにより、データフローパス内の複雑さが加わるはずであり、それにより、複雑さが増大し、場合によっては効率が低減される。
【０１７７】
[00222]この問題に対処するために、下記で開示される実施形態は、ＶＰＥ内の実行ユニットとベクトルデータメモリとの間の出力データフローパス内に設けられたマージング回路を含むＶＰＥを含む。マージング回路は、出力ベクトルデータサンプルセットが実行ユニットからベクトルデータメモリに出力データフローパスを介して供給されている間に、インフライトの実行ユニットによって供給された出力ベクトルデータサンプルセットからの出力ベクトルデータサンプルをマージするように構成される。出力ベクトルデータサンプルのインフライトマージングは、実行ユニットによって供給された出力ベクトルデータサンプルが、ベクトルデータメモリに記憶される前にマージされ得ることを意味し、その結果、得られた出力ベクトルデータサンプルセットはマージされたフォーマットでベクトルデータメモリに記憶される。マージされた出力ベクトルデータサンプルは、実行ユニット内で実行されるべき次のベクトル処理動作を遅延させる可能性がある、さらなる後処理ステップを必要とせずに、ベクトルデータファイルに記憶され得る。したがって、ＶＰＥ内のデータフローパスの効率は、ベクトルデータマージング動作によって制限されない。マージされたベクトルデータサンプルがベクトルデータメモリに記憶されるとき、実行ユニット内の次のベクトル処理は、データフローの制限ではなく、コンピュータリソースのみによって制限される。
【０１７８】
[00223]この関連で、図３１は、図２のＶＰＥ２２として提供され得る別の例示的なＶＰＥ２２（６）の概略図である。下記でより詳細に記載されるように、図３１のＶＰＥ２２（６）は、ベクトルデータサンプルの再フェッチが除去または低減され、電力消費が低減される、ＶＰＥ２２（６）内のベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されるべき、ベクトル処理動作のためのコードシーケンスを用いて実行ユニット８４（０）〜８４（Ｘ）によって供給される、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）のインフライトマージングを提供するように構成される。結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）は、結果として生じる出力ベクトルデータサンプル２９２（０）、．．．、２９２（Ｘ）から構成される。非限定的な例として、マージベクトル処理動作は、結果として生じる出力ベクトルデータサンプル２９２を加算すること、複数の結果として生じる出力ベクトルデータサンプル２９２の中の最大ベクトルデータサンプル値を決定すること、または複数の結果として生じる出力ベクトルデータサンプル２９２の中の最小ベクトルデータサンプル値を決定することを含む可能性がある。図３１のＶＰＥ２２（６）では、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）の中の、結果として生じる出力ベクトルデータサンプル２９２は、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前にマージされ得る。
【０１７９】
[00224]マージング回路２９４は、結果として生じる出力ベクトルデータサンプルセット２２８（０）〜２２８（Ｘ）の中の、結果として生じる出力ベクトルデータサンプル２２８のインフライトマージングを提供するために、実行されるべきベクトル命令に従うプログラミングに基づいて構成される。マージされた、結果として生じる出力ベクトルデータサンプル２９６（０）〜２９６（Ｚ）は、出力データフローパス９８（０）〜９８（Ｘ）内のマージング回路２９４によって供給される。マージされた結果として生じる出力ベクトルデータサンプル２９６（０）〜２９６（Ｚ）における「Ｚ」は、マージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）内のマージされた、結果として生じる出力ベクトルデータサンプル２９６の数を表す。マージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）は、この例では２９６（０）、．．．、および２９６（Ｚ）である、結果として生じる出力ベクトルデータサンプル２９６から構成される。マージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）内のマージされた、結果として生じる出力ベクトルデータサンプル２９６の数は、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）に対して実行されるマージング動作に依存する。図３１のＶＰＥ２２（６）における、結果として生じる出力ベクトルデータサンプル２９２のインフライトマージングは、実行ユニット８４（０）〜８４（Ｘ）によって供給された、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）内の、結果として生じる出力ベクトルデータサンプル２９２が、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前に、一緒にマージされ得ることを意味する。このようにして、マージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）のマージされた、結果として生じる出力ベクトルデータサンプル２９６は、マージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）として、マージされた形式でベクトルデータファイル８２（０）〜８２（Ｘ）に記憶され得る。
【０１８０】
[00225]このように、出力データフローパス９８（０）〜９８（Ｘ）内に設けられたマージング回路２９４により、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）は、最初にベクトルデータファイル８２（０）〜８２（Ｘ）に記憶され、次いでベクトルデータファイル８２（０）〜８２（Ｘ）からフェッチされる必要がない。所望の結果として生じる出力ベクトルデータサンプル２９２はマージされ、結果として生じる出力ベクトルデータサンプル２９２は、ベクトルデータファイル８２（０）〜８２（Ｘ）にマージされた形式で再記憶される。結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）からの、結果として生じる出力ベクトルデータサンプル２９２は、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前にマージされ得る。このようにして、マージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）からのマージされた、結果として生じる出力ベクトルデータサンプル２９６は、実行ユニット８４（０）〜８４（Ｘ）において実行されるべき次のベクトル処理動作を遅延させる可能性がある、さらなる後処理ステップを必要とせずに、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される。したがって、ＶＰＥ２２（６）内のデータフローパスの効率は、結果として生じる出力ベクトルデータサンプル２９２のマージングによって制限されない。結果として生じる出力ベクトルデータサンプル２９２がベクトルデータファイル８２（０）〜８２（Ｘ）にマージされた形式で記憶されるとき、実行ユニット８４（０）〜８４（Ｘ）における次のベクトル処理は、データフローの制限ではなく、コンピュータリソースのみによって制限される。
【０１８１】
[00226]さらに、実行ユニット８４（０）〜８４（Ｘ）とベクトルデータファイル８２（０）〜８２（Ｘ）との間の出力データフローパス９８（０）〜９８（Ｘ）内にマージング回路２９４を設けることによって、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）は、ベクトルデータファイル８２（０）〜８２（Ｘ）と実行ユニット８４（０）〜８４（Ｘ）との間の入力データフローパス８０（０）〜８０（Ｘ）内のベクトルデータレーン１００と交差する必要がない。異なるベクトルデータレーン１００の間の入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）内の入力ベクトルデータサンプル８６のマージングのためのデータフローパスを設けると、ルーティングの複雑さが増大するはずである。結果として、入力データフローパス８０（０）〜８０（Ｘ）においてマージング動作が実行されている間、実行ユニット８４（０）〜８４（Ｘ）は過少利用される可能性がある。同様に、上記で説明されたように、入力データフローパス８０（０）〜８０（Ｘ）における、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）からの、結果として生じる出力ベクトルデータサンプル２９２のマージングは、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）が最初に図３１のＶＰＥ２２（６）内のベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されることを必要とするはずであり、それにより、再フェッチおよびマージされるときの電力消費が増大し、および／またはマージング動作が実行されている間に遅延する可能性がある実行ユニット８４（０）〜８４（Ｘ）の過少利用のリスクがある。
【０１８２】
[00227]図４、図１１、図１９、図２３および図２７のＶＰＥ２２（１）〜２２（５）内に設けられた共通構成要素が、図３１のＶＰＥ２２（６）内に設けられることに留意されたい。共通構成要素は、共通要素番号とともに図３１のＶＰＥ２２（６）において示される。ＶＰＥ２２（１）〜２２（５）内の上記これらの共通構成要素の前の記載および説明は、図３１のＶＰＥ２２（６）にも適用可能であり、したがってここでは再び記載されない。
【０１８３】
[00228]引き続き図３１を参照すると、より具体的には、マージング回路２９４は、出力データフローパス９８（０）〜９８（Ｘ）上のマージング回路入力３００（０）〜３００（Ｘ）上で、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）を受信するように構成される。マージング回路２９４は、マージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）を供給するために、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）からの所望の結果として生じる出力ベクトルデータサンプル２９２をマージするように構成される。マージされた結果として生じる出力ベクトルデータサンプル２９６（０）〜２９６（Ｚ）における「Ｚ」は、マージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）のビット幅を表す。「Ｚ」は、マージング動作に起因して、「Ｘ」によって表される、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）のビット幅よりも小さい場合がある。下記でより詳細に説明されるように、マージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）内のマージされた、結果として生じる出力ベクトルデータサンプル２９６の数「Ｚ＋１」は、一緒にマージされるべき結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）からの、結果として生じる出力ベクトルデータサンプル２９２に依存する。マージング回路２９４は、記憶用にベクトルデータファイル８２（０）〜８２（Ｘ）に供給されるために、出力データフローパス９８（０）〜９８（Ｘ）内のマージング回路出力３０１（０）〜３０１（Ｘ）上にマージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）を供給するように構成される。
【０１８４】
[00229]この実施形態における出力データフローパス９８（０）〜９８（Ｘ）内のベクトルデータファイル８２（０）〜８２（Ｘ）にマージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）を供給するための、図３１のＶＰＥ２２（６）のさらなる詳細および特徴のさらなる説明が次に記載される。この関連で、図３２は、結果として生じる出力ベクトルデータサンプル２９２のマージングを必要とする例示的なベクトル命令に従って、マージング回路２９４を利用する図３１のＶＰＥ２２（６）において実行され得るベクトル処理動作３０２から得られた、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）の、結果として生じる出力ベクトルデータサンプル２９２の例示的なマージングを示すフローチャートである。
【０１８５】
[00230]図３１と図３２とを参照すると、ベクトル命令に従うベクトル処理動作３０２に従って処理されるべき入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、ベクトルデータファイル８２（０）〜８２（Ｘ）からフェッチされ、入力データフローパス８０（０）〜８０（Ｘ）内に供給される（図３２のブロック３０４）。ベクトル処理動作３０２のための入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅に応じて、ベクトル命令のプログラミングに従うベクトル処理動作３０２を提供するために、図３１のＶＰＥ２２（６）内のベクトルデータレーン１００（０）〜１００（Ｘ）の１つ、いくつか、またはすべてが利用され得る。ベクトルデータファイル８２（０）〜８２（Ｘ）の幅全体が必要な場合、すべてのベクトルデータレーン１００（０）〜１００（Ｘ）がベクトル処理動作３０２に利用され得る。ベクトル処理動作３０２は、ベクトルデータレーン１００（０）〜１００（Ｘ）のサブセットを必要とするにすぎない場合がある。これは、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）の幅がすべてのベクトルデータファイル８２（０）〜８２（Ｘ）の幅よりも小さいからであり得るし、ここで、ベクトル処理動作３０２と並列に実行されるべき他のベクトル処理動作にさらなるベクトルデータレーン１００を利用することが望ましい。
【０１８６】
[00231]引き続き図３１と図３２とを参照すると、フェッチされた入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）が、実行ユニット８４（０）〜８４（Ｘ）にある入力データフローパス８０（０）〜８０（Ｘ）から受信される（図３２のブロック３０６）。実行ユニット８４（０）〜８４（Ｘ）が、ベクトル命令に従って提供されたベクトル処理動作３０２に従って、受信された入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）に対してベクトル処理動作３０２を実行する（図３２のブロック３０８）。実行ユニット８４（０）〜８４（Ｘ）は、ベクトル処理動作３０２が、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）を供給するために、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）を使用して、乗算および／または累算を提供することができる。ベクトル処理動作３０２が完了すると、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）上で遂行されたベクトル処理動作３０２に基づく、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）は、図３１のＶＰＥ２２（６）の出力データフローパス９８（０）〜９８（Ｘ）内に供給される。
【０１８７】
[00232]引き続き図３１と図３２とを参照すると、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）がベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前に、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）は、実行ユニット８４（０）〜８４（Ｘ）とベクトルデータファイル８２（０）〜８２（Ｘ）との間に設けられた出力データフローパス９８（０）〜９８（Ｘ）内に設けられたマージング回路２９４に供給される。マージング回路２９４は、実行されているベクトル命令に従って、および下記でより詳細に説明されるように、ベクトル命令がベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されるべき、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）からの、結果として生じる出力ベクトルデータサンプル２９２のマージングを要求する場合、出力データフローパス９８（０）〜９８（Ｘ）に含まれるようにプログラム可能である。結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）がベクトルデータファイル８２（０）〜８２（Ｘ）に記憶されることなく、マージング回路２９４が、実行されているベクトル命令に従って、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）からの、結果として生じる出力ベクトルデータサンプル２９２をマージする（図３２のブロック３１０）。このようにして、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）は、それにより実行ユニット８４（０）〜８４（Ｘ）において遅延をもたらす、最初にベクトルデータファイル８２（０）〜８２（Ｘ）に記憶され、再フェッチされ、後処理動作においてマージされ、ベクトルデータファイル８２（０）〜８２（Ｘ）にマージされたフォーマットで記憶される必要がない。結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）が、マージ後処理を必要とせずに、ベクトルデータファイル８２（０）〜８２（Ｘ）にマージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）として記憶される（図３２のブロック３１２）。
【０１８８】
[00233]図３３は、図３１のＶＰＥ２２（６）内の実行ユニット８４（０）〜８４（Ｘ）とベクトルデータファイル８２（０）〜８２（Ｘ）との間の出力データフローパス９８（０）〜９８（Ｘ）内に設けられ得る例示的なマージング回路２９４の概略図である。マージング回路２９４は、マージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）を供給するために、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）のマージングを提供するように構成される。結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）は、図３１に示されたように、実行ユニット出力９６（０）〜９６（Ｘ）からマージング回路２９４に供給される。
【０１８９】
[00234]引き続き図３３を参照すると、マージング回路２９４は、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）をマージするように構成される。この実施形態におけるマージング回路２９４は、マージされた、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）を供給するように構成される。この関連で、マージング回路２９４は、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）を受信するために、実行ユニット出力９６（０）〜９６（Ｘ）に結合された加算器ツリー３１８を含んでいる。マージング回路２９４の加算器ツリー３１８は、それらのそれぞれのベクトルデータレーン１００（０）〜１００（Ｘ）内で、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）の各サンプル２９２を受信するように構成される。加算器ツリー３１８内に第１の加算器ツリーレベル３１８（１）が設けられる。第１の加算器ツリーレベル３１８（１）は、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）内の隣接サンプル２９２をマージすることができるように、マージ回路３２０（０）〜３２０（（（Ｘ＋１）／２）−１）、３２０（７）から構成される。出力データフローパス９８（０）〜９８（Ｘ）から、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）をラッチするために、ラッチ３２１（０）〜３２１（Ｘ）がマージング回路２９４内に設けられる。
【０１９０】
[00235]たとえば、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）内の各サンプル２９２が３２ビット幅であり、２つの１６ビット複素数のベクトルデータ（すなわち、フォーマットＩ８Ｑ８に従う第１のベクトルデータおよびフォーマットＩ８Ｑ８に従う第２のベクトルデータ）から構成される場合、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）内の２つの、結果として生じる出力ベクトルデータサンプル２９２の中の４つのベクトルデータサンプルを、１つのマージされた、結果として生じる出力ベクトルデータサンプル２９６の中にマージするために、マージング動作が適用される可能性がある。たとえば、図３３に示されたように、加算器３２０（０）は、結果として生じる出力ベクトルデータサンプル２９２（０）と２９２（１）とをマージするように構成される。同じく、加算器３２０（１）は、それらのサンプルのための、結果として生じる出力ベクトルデータサンプル２９２（２）と２９２（３）とをマージするように構成される。加算器３２０（（（Ｘ＋１）／２）−１）、３２０（７）は、マージベクトルデータサンプルセット３２２（０）〜３２２（（（Ｘ＋１）／２）−１）、３２２（７）を供給するために、結果として生じる出力ベクトルデータサンプルセット２９２（Ｘ−１）と２９２（Ｘ）とをマージするように構成される。加算器３２０（（（Ｘ＋１）／２）−１）、３２０（７）によって実行されたマージングからのマージベクトルデータサンプルセット３２２（０）〜３２２（（（Ｘ＋１）／２）−１）、３２２（７）は、ラッチ３２５（０）〜３２５（（（Ｘ＋１）／２）−１）、３２５（７）の中にラッチされる。
【０１９１】
[00236]マージベクトル処理動作３０２が、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）のマージングを必要とする場合、下記でより詳細に記載されるように、マージベクトルデータサンプルセット３２２（０）〜３２２（（（Ｘ＋１）／２）−１）、３２２（７）は、マージ、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）として供給され得るし、ここで、「Ｚ」は７である。しかしながら、マージベクトル処理動作３０２が、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）内の隣接しない、結果として生じる出力ベクトルデータサンプル２９２のマージングを要求する場合、マージベクトルデータサンプルセット３２２（０）〜３２２（（（Ｘ＋１）／２）−１）、３２２（７）は、マージ、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）として供給されない。マージベクトルデータサンプルセット３２２（０）〜３２２（（（Ｘ＋１）／２）−１）、３２２（７）は、加算器３２４（０）〜３２４（（（Ｘ＋１）／４）−１）、３２４（３）への第２の加算器ツリーレベル３１８（２）に供給される。この関連で、加算器３２４（０）は、結果として生じるマージベクトルデータサンプル３２６（０）を供給するために、マージベクトルデータサンプル３２２（０）および３２２（１）に対してマージングを実行するように構成される。同じく、加算器３２４（１）は、結果として生じるマージベクトルデータサンプル３２６（１）を供給するために、マージベクトルデータサンプル３２２（２）および３２２（３）に対してマージングを実行するように構成される。加算器３２４（（（Ｘ＋１）／４）−１）、３２４（３）は、結果として生じるマージベクトルデータサンプル３２６（（（Ｘ＋１）／４）−１）、３２６（３）を供給するために、マージベクトルデータサンプル３２２（（（Ｘ＋１）／４）−２）、３２２（（（Ｘ＋１）／４）−１）、３２２（３）に対してマージングを実行するように構成される。加算器３２４（０）〜３２４（（（Ｘ＋１）／４）−１）、３２４（３）によって実行されたマージングからの、結果として生じるマージベクトルデータサンプルセット３２６（０）〜３２６（（（Ｘ＋１）／４）−１）、３２６（３）は、ラッチ３２７（０）〜３２７（（（Ｘ＋１）／４）−１）、３２７（３）の中にラッチされる。
【０１９２】
[00237]引き続き図３３を参照すると、マージベクトル処理動作３０２が８のマージ係数による、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）のマージングを必要とする場合、下記でより詳細に記載されるように、マージベクトルデータサンプルセット３２６（０）〜３２６（（（Ｘ＋１）／４）−１）、３２６（３）は、マージ、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）として供給され得るし、ここで、「Ｚ」は３である。しかしながら、マージベクトル処理動作３０２が８よりも高いマージ係数（たとえば、１６、３２、６４、１２８、２５６）を要求する場合、マージベクトルデータサンプルセット３２６（０）〜３２６（（（Ｘ＋１）／４）−１）、３２６（３）は、マージ、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）として供給されない。マージベクトルデータサンプルセット３２６（０）〜３２６（（（Ｘ＋１）／４）−１）、３２６（３）は、加算器３２８（０）〜３２８（（（Ｘ＋１）／８）−１）、３２８（１）への第３の加算器ツリーレベル３１８（３）に供給される。この関連で、加算器３２８（０）は、それらのサンプルのための１６のマージ係数を供給するために、マージベクトルデータサンプル３２６（０）および３２６（１）に対してマージングを実行するように構成される。同じく、加算器３２８（１）は、１６のマージ係数を有するマージベクトルデータサンプルセット３３０（０）〜３３０（（（Ｘ＋１）／８）−１）、３３０（１）を供給するために、マージベクトルデータサンプル３２６（２）および３２６（３）に対してマージングを実行するように構成される。加算器３２８（０）〜３２８（（（Ｘ＋１）／８）−１）、３２８（１）によって実行されたマージングからのマージベクトルデータサンプルセット３３０（０）〜３３０（（（Ｘ＋１）／８）−１）、３３０（１）は、ラッチ３２９（０）〜３２９（（（Ｘ＋１）／８）−１）、３２９（１）の中にラッチされる。
【０１９３】
[00238]引き続き図３３を参照すると、マージベクトル処理動作３０２が１６のマージ係数による、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）のマージングを必要とする場合、下記でより詳細に記載されるように、マージベクトルデータサンプルセット３３０（０）〜３３０（（（Ｘ＋１）／８）−１）、３３０（１）は、マージ、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）として供給され得るし、ここで、「Ｚ」は１である。しかしながら、マージベクトル処理動作２３６が１６よりも高いマージ係数（たとえば、３２、６４、１２８、２５６）を要求する場合、マージベクトルデータサンプルセット３３０（０）〜３３０（（（Ｘ＋１）／８）−１）、３３０（１）は、マージ、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）として供給されない。マージベクトルデータサンプルセット３３０（０）〜３３０（（（Ｘ＋１）／８）−１）、３３０（１）は、加算器３３２への第４の加算器ツリーレベル３１８（４）に供給される。この関連で、加算器３３２は、３２のマージ係数を有するマージベクトルデータサンプル３３４を供給するために、マージベクトルデータサンプル３３０（０）および３３０（１）に対してマージングを実行するように構成される。加算器３３２によって実行されたマージングからのマージベクトルデータサンプル３３４は、ラッチ３３６および３３８の中にラッチされる。
【０１９４】
[00239]引き続き図３３を参照すると、マージベクトル処理動作３０２が３２のマージ係数による、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）のマージングを必要とする場合、下記でより詳細に記載されるように、マージベクトルデータサンプル３３４は、マージ、結果として生じる出力ベクトルデータサンプル２９６として供給され得る。しかしながら、マージベクトル処理動作３０２が３２よりも高いマージ係数（たとえば、６４、１２８、２５６）を要求する場合、マージベクトルデータサンプル３３４は、マージ、結果として生じる出力ベクトルデータサンプル２９６として供給されない。マージベクトルデータサンプル３３４は、ベクトルデータファイル８２に記憶される必要なしに、ラッチ３３８の中にラッチされたままである。上述されたように、３２のマージ係数を使用してマージされるために、別の結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）は、さらなる処理サイクルにわたって、ラッチ３２１（０）〜３２１（Ｘ）の中にロードされる。結果として生じるマージベクトルデータサンプル３３４’は、６４のマージ係数を有するマージベクトルデータサンプル３４２を供給するために、第５の加算器ツリー３１８（５）内の加算器３４０により、前のマージベクトルデータサンプル３３４に加算される。選択器３４３は、３２のマージ係数を有するマージベクトルデータサンプル３３４、または６４のマージ係数を有するマージベクトルデータサンプル３３４’のどちらが、マージベクトルデータサンプル３４２としてラッチ３４４の中にラッチされるかを制御する。さらなる結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）をラッチし、さらなる結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）をマージするこの同じプロセスは、必要な場合、６４よりも大きいマージ係数を達成するために実行され得る。マージベクトルデータサンプル３４２は、最終的に、マージベクトル処理動作３０２のための所望のマージ係数に従って、所望のマージ、結果として生じる出力ベクトルデータサンプル２９６として、ラッチ３４４の中にラッチされる。
【０１９５】
[00240]引き続き図３３を参照すると、マージベクトル処理動作３０２においてどのマージ係数が要求されても、マージ、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）は、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される必要がある。次に説明されるように、図３３のマージング回路２９４はまた、マージ、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）を形成するために、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）に対してマージベクトル処理動作３０２を実行する結果としてもたらされたマージ、結果として生じる出力ベクトルデータサンプル２９６をラッチ３４６（０）〜３４６（Ｘ）の中にロードするように構成される。マージ、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）は、記憶されるためにベクトルデータファイル８２（０）〜８２（Ｘ）に供給され得る。このようにして、マージング回路２９４によって作成されたマージ、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）を記憶するために、ベクトルデータファイル８２（０）〜８２（Ｘ）に対して１回の書込みが必要とされるにすぎない。図３３のマージング回路２９４内の加算器ツリー３１８（１）〜３１８（５）は、マージベクトル処理動作３０２においてどのマージ係数が要求されても、マージ係数４、８、１６、および３２のすべてに対して、マージ、結果として生じる出力ベクトルデータサンプル２９６を生成することができる。代替として、所望のマージ係数に従ってマージベクトル処理動作３０２を実行する必要がない加算器ツリー内の加算器は、無効にされ得るか、または０を加算するように構成され得る。しかしながら、これらのマージ、結果として生じる出力ベクトルデータサンプル２９６のどれが記憶されるためにラッチ３４６（０）〜３４６（Ｘ）に供給されるかを決定するために、次に説明されるように、選択器３４８（０）〜３４８（（（Ｘ＋１）／４）−１）、３４８（３）が設けられる。
【０１９６】
[00241]この関連で、引き続き図３３を参照すると、選択器３４８（０）は、実行されているマージベクトル処理動作３０２に基づいて、それぞれ、加算器３２０（０）、３２４（０）、３２８（０）からのマージ係数４、８、および１６、ならびに加算器３３２、３４０からのマージ係数３２、６４、１２８、２５６のいずれかに対して、マージ、結果として生じる出力ベクトルデータサンプル２９６を選択することができる。選択器３４８（１）は、実行されているマージベクトル処理動作３０２に基づいて、それぞれ、加算器３２０（１）、３２４（１）、３２８（１）からのマージ係数４、８、および１６に対して、マージ、結果として生じる出力ベクトルデータサンプル２９６を選択することができる。選択器３４８（２）は、実行されているマージベクトル処理動作３０２に基づいて、それぞれ、加算器３２０（２）および３２４（２）からのマージ係数４および８に対して、マージ、結果として生じる出力ベクトルデータサンプル２９６を選択することができる。選択器３４８（３）は、実行されているマージベクトル処理動作３０２に基づいて、それぞれ、加算器３２０（３）および３２４（３）からのマージ係数４および８に対して、マージ、結果として生じる出力ベクトルデータサンプル２９６を選択することができる。８のマージ係数を供給することが選択器３４８（０）〜３４８（３）によって完全に満足され得るので、選択器は、加算器３２０（４）〜３２０（７）から供給されたマージ、結果として生じる出力ベクトルデータサンプル２９６を制御するためには設けられない。
【０１９７】
[00242]引き続き図３３を参照すると、マージベクトル処理動作用に設けられたデータスライサ３５０（０）〜３５０（（（Ｘ＋１）／２）−１）、３５０（７）は、バイパスされるか、または、それぞれ、選択器３４８（０）〜３４８（（（Ｘ＋１）／４）−１）、３４８（３）および加算器３２０（４）〜３２０（（（Ｘ＋１）／２）−１）、３２０（７）によって選択された、受信されたマージ、結果として生じる出力ベクトルデータサンプル２９６に対してデータスプライシングを実行しないように構成される可能性がある。マージ、結果として生じる出力ベクトルデータサンプル２９６は、次いで、クロスバー３５２への接続を介して、記憶されるためにラッチ３４６（０）〜３４６（Ｘ）の中の所望のラッチ３４６に転送される。クロスバー３５２は、様々なラッチ３４６（０）〜３４６（Ｘ）に、マージベクトル処理動作３０２に従ってマージ、結果として生じる出力ベクトルデータサンプル２９６を供給する柔軟性を提供する。このようにして、マージ、結果として生じる出力ベクトルデータサンプル２９６は、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前に、マージベクトル処理動作３０２の様々な繰返しの中で、ラッチ３４６（０）〜３４６（Ｘ）にスタックされ得る。たとえば、マージ、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）は、ベクトルデータファイル８２（０）〜８２（Ｘ）に記憶される前に、マージベクトル処理動作３０２の様々な繰返しの中で、ラッチ３４６（０）〜３４６（Ｘ）にスタックされ得る。このようにして、マージ、結果として生じる出力ベクトルデータサンプルセット２９６（０）〜２９６（Ｚ）を記憶するためのベクトルデータファイル８２（０）〜８２（Ｘ）へのアクセスは、動作効率のために最小化され得る。
【０１９８】
[00243]たとえば、図３３に示されたように、クロスバー３５２に結合された選択器３５４（０）〜３５４（Ｘ）は、ラッチ３４６（０）〜３４６（Ｘ）のいずれかの中に選択器３４８（０）からのマージ、結果として生じる出力ベクトルデータサンプル２９６を記憶するように制御され得る。クロスバー３５２に結合された選択器３５４（１）、３５４（３）、３５４（５）、３５４（７）、３５４（９）、３５４（１１）、３５４（１３）、３５４（１５）は、ラッチ３４６（１）、３４６（３）、３４６（５）、３４６（７）、３４６（９）、３４６（１１）、３４６（１３）、および３４６（１５）に記憶されるべき選択器３４８（１）からのマージ、結果として生じる出力ベクトルデータサンプル２９６を記憶するように制御され得る。クロスバー３５２に結合された選択器３５４（２）、３５４（６）、３５４（１０）、３５４（１４）は、ラッチ３４６（２）、３４６（６）、３４６（１０）、および３４６（１４）に選択器３４８（２）からのマージ、結果として生じる出力ベクトルデータサンプル２９６を記憶するように制御され得る。クロスバー３５２に結合された選択器３５４（３）、３５４（７）、３５４（１１）、３５４（１５）は、ラッチ３４６（３）、３４６（７）、３４６（１１）、および３４６（１５）に選択器３４８（３）からのマージ、結果として生じる出力ベクトルデータサンプル２９６を記憶するように制御され得る。クロスバー３５２に結合された選択器３５４（４）および３５４（１２）は、ラッチ３４６（４）および３４６（１２）に加算器３２０（４）からのマージ、結果として生じる出力ベクトルデータサンプル２９６を記憶するように制御され得る。クロスバー３５２に結合された選択器３５４（５）および３５４（１３）は、ラッチ３４６（５）および３４６（１３）に加算器３２０（５）からのマージ、結果として生じる出力ベクトルデータサンプル２９６を記憶するように制御され得る。クロスバー３５２に結合された選択器３５４（６）および３５４（１４）は、ラッチ３４６（６）または３４６（１４）に加算器３２０（６）からのマージ、結果として生じる出力ベクトルデータサンプル２９６を記憶するように制御され得る。クロスバー３５２に結合された選択器３５４（７）および３５４（１５）は、ラッチ３４６（７）または３４６（１５）に加算器３２０（７）からのマージ、結果として生じる出力ベクトルデータサンプル２９６を記憶するように制御され得る。
【０１９９】
[00244]図３３のマージング回路２９４では、加算器は、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）内の隣接しない、結果として生じる出力ベクトルデータサンプル２８２がマージされることを可能にするように構成される可能性があることに留意されたい。たとえば、結果として生じる出力ベクトルデータサンプル２９２（０）を、結果として生じる出力ベクトルデータサンプル２９２（９）とマージすることが望ましい場合、加算器ツリーレベル３１８（１）〜３１８（３）内の加算器は、単に、結果として生じる出力ベクトルデータサンプル２９２（９）との、結果として生じる出力ベクトルデータサンプル２９２（０）のマージを、加算器ツリーレベル３１８（４）に渡すように構成される可能性がある。加算器ツリーレベル３１８（４）内の加算器３３２は、次いで、マージされた出力ベクトルデータサンプル２９６を供給するために、結果として生じる出力ベクトルデータサンプル２９２（０）を、結果として生じる出力ベクトルデータサンプル２９２（９）とマージする可能性がある。
【０２００】
[00245]ベクトルおよび／またはスカラーの加算以外の他のタイプのベクトルマージング演算を提供するマージング回路も、実行ユニット８４（０）〜８４（Ｘ）とベクトルデータファイル８２（０）〜８２（Ｘ）との間の出力データフローパス９８（０）〜９８（Ｘ）内に設けられる可能性がある。たとえば、図３３のマージング回路２９４は、最大または最小のベクトルおよび／またはスカラーのマージング演算を提供するように構成される可能性がある。たとえば、図３３の加算器ツリー３１８の加算器ツリーレベル３１８（１）〜３１８（５）内の加算器は、最大または最小の関数回路と交換される可能性がある。言い換えれば、回路は、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）からの２つの、結果として生じる出力ベクトルデータサンプル２９２のうちの大きい方または小さい方のいずれかを渡すことを選択するはずである。たとえば、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）からの２つの、結果として生じる出力ベクトルデータサンプル２９２が、図３０における２つの入力ベクトルデータサンプル２９０（０）、２９０（１）であった場合、マージング回路２９４が最大ベクトルデータサンプルを選択するように構成されている場合、マージング回路２９４は、ベクトルデータサンプル２９０（１）を選択するように構成される可能性がある。
【０２０１】
[00246]この関連で、図３４を参照すると、図３３の第１の加算器ツリーレベル３１８（１）内の加算器３２０（０）〜３２０（（（Ｘ＋１）／２）−１）、３２０（７）は、図３４に示されたように、最大または最小のマージ選択加算器３２０’（０）〜３２０’（（（Ｘ＋１）／２）−１）、３２０’（７）と交換される可能性がある。第２の加算器ツリーレベル３１８（２）内の加算器３２４（０）〜３２４（（（Ｘ＋１）／４）−１）、３２４（３）は、図３４に示されたように、最大または最小の選択器３２４’（０）〜３２４’（（（Ｘ＋１）／４）−１）、３２４’（３）と交換される可能性がある。第３の加算器ツリーレベル３１８（３）内の加算器３２８（０）〜３２８（（（Ｘ＋１）／８）−１）、３２８（１）は、図３４に示されたように、最大または最小の選択器３２８’（０）〜３２８’（（（Ｘ＋１）／８）−１）、３２８’（１）と交換される可能性がある。第４の加算器ツリーレベル３１８（４）内の加算器３３２は、図３４に示されたように、最大または最小の選択器３３２’と交換される可能性がある。第５の加算器ツリーレベル３１８（５）内の加算器３４０は、図３４に示されたように、最大または最小の選択器３４０’と交換される可能性がある。図３４のマージング回路２９４では、加算器は、マージされるべき、結果として生じる出力ベクトルデータサンプルセット２９２（０）〜２９２（Ｘ）内の隣接しない、結果として生じる出力ベクトルデータサンプル２９２の間の、最大または最小の、結果として生じる出力ベクトルデータサンプル２９２を選択するように構成される可能性がある。たとえば、結果として生じる出力ベクトルデータサンプル２９２（０）を、結果として生じる出力ベクトルデータサンプル２９２（９）と最大マージすることが望ましい場合、加算器ツリーレベル３１８（１）〜３１８（３）内の加算器は、単に、結果として生じる出力ベクトルデータサンプル２９２（９）との、結果として生じる出力ベクトルデータサンプル２９２（０）のマージを、加算器ツリーレベル３１８（４）に渡すように構成される可能性がある。加算器ツリーレベル３１８（４）内の加算器３３２’は、次いで、マージされた出力ベクトルデータサンプル２６４を供給するために、結果として生じる出力ベクトルデータサンプル２９２（０）を、結果として生じる出力ベクトルデータサンプル２９２（９）と最大マージする可能性がある。
【０２０２】
[00247]上記で説明されたように、入力ベクトルデータサンプルセット８６（０）〜８６（Ｘ）に対してベクトル処理動作を実行するために、ＶＰＥ２２（１）〜（６）内に実行ユニット８４（０）〜８４（Ｘ）が設けられる。実行ユニット８４（０）〜８４（Ｘ）は、実行ユニット８４（０）〜８４（Ｘ）が様々なベクトル処理動作のための共通回路とハードウェアとを用いて複数の動作モードを提供することを可能にする、プログラム可能なデータパス構成も含む。実行ユニット８４（０）〜８４（Ｘ）および共通回路とハードウェアとを用いて複数の動作モードを提供するためのそれらのプログラム可能なデータパス構成に関するより例示的な詳細が次に説明される。
【０２０３】
[00248]この関連で、図３５は、ＶＰＥ２２（１）〜（６）内の実行ユニット８４（０）〜８４（Ｘ）の各々のために提供され得る、例示的な実行ユニットの例示的な概略図を示す。図３５に示されたように、および図３６〜図３９において以下でより詳細に記載されるように、実行ユニット８４は、プログラム可能なデータパス構成を用いて構成され得る例示的なベクトル処理ブロックを有する、複数の例示的なベクトルパイプラインステージ４６０を含む。下記でより詳細に説明されるように、ベクトル処理ブロック内に設けられたプログラム可能なデータパス構成により、特定の回路およびハードウェアが、図２のベクトルユニットデータメモリ３２から受信されたベクトルデータ３０に対する異なる特定のベクトル処理動作の実行をサポートするようにプログラムおよび再プログラムされることが可能になる。
【０２０４】
[00249]たとえば、いくつかのベクトル処理動作は、通常、ベクトルデータ３０の乗算、続いて、乗算されたベクトルデータ結果の累算を必要とする場合がある。そのようなベクトル処理の非限定的な例には、ワイヤレス通信アルゴリズムのための高速フーリエ変換（ＦＦＴ）演算を実行するために通常使用される、フィルタリング演算、相関演算、ならびに基数２および基数４のバタフライ演算が含まれ、ここで、一連の並列乗算が、続いて乗算結果の一連の並列累算が提供される。同様に図３９および図４０に関して下記でより詳細に説明されるように、図３５の実行ユニット８４は、桁上げ保存累算器において冗長桁上げ保存フォーマットを提供するための桁上げ保存累算器を有する融合乗算器のオプションも有する。桁上げ保存累算器において冗長桁上げ保存フォーマットを提供することにより、桁上げ伝搬パスと、累算の各ステップの間の桁上げ伝搬加算演算とを提供する必要をなくすことができる。
【０２０５】
[00250]この関連で、図３５をさらに参照すると、ＶＰＥ２２のＭ０乗算ベクトルパイプラインステージ４６０（１）が最初に記載される。Ｍ０乗算ベクトルパイプラインステージ４６０（１）は、各々がプログラム可能なデータパス構成を有する、任意の所望の数の乗算器ブロック４６２（Ａ）〜４６２（０）の形式で複数のベクトル処理ブロックを含んでいる第２のベクトルパイプラインステージである。乗算器ブロック４６２（Ａ）〜４６２（０）は、実行ユニット８４内でベクトル乗算演算を実行するために設けられる。複数の乗算器ブロック４６２（Ａ）〜４６２（０）は、最大１２個の乗算ベクトルデータサンプルセット３４（Ｙ）〜３４（０）の乗算を提供するために、Ｍ０乗算ベクトルパイプラインステージ４６０（１）内で互いと並列に配置される。この実施形態では、「Ａ」は３に等しく、この例では、Ｍ０乗算ベクトルパイプラインステージ４６０（１）に４つの乗算器ブロック４６２（３）〜４６２（０）が含まれることを意味する。乗算ベクトルデータサンプルセット３４（Ｙ）〜３４（０）は、実行ユニット８４内の第１のベクトルパイプラインステージ４６０（０）である、入力読取り（ＲＲ）ベクトルパイプラインステージ内に設けられた複数のラッチ４６４（Ｙ）〜４６４（０）へのベクトル処理のための実行ユニット８４の中にロードされる。この実施形態では実行ユニット８４内に１２個のラッチ４６４（１１）〜４６４（０）があり、この実施形態では「Ｙ」が１１に等しいことを意味する。ラッチ４６４（１１）〜４６４（０）は、ベクトルレジスタ（図２のベクトルデータファイル２８参照）から取り出された乗算ベクトルデータサンプルセット３４（１１）〜３４（０）を、ベクトルデータ入力サンプルセット４６６（１１）〜４６６（０）としてラッチするように構成される。この例では、各ラッチ４６４（１１）〜４６４（０）は８ビット幅である。ラッチ４６４（１１）〜４６４（０）は、各々、それぞれ乗算ベクトルデータ入力サンプルセット４６６（１１）〜４６６（０）を、総計９６ビット幅のベクトルデータ３０（すなわち、１２ラッチ×各８ビット）を求めてラッチするように構成される。
【０２０６】
[00251]引き続き図３５を参照すると、複数の乗算器ブロック４６２（３）〜４６２（０）は、ベクトル乗算演算を提供するために、ベクトルデータ入力サンプルセット４６６（１１）〜４６６（０）のいくつかの組合せを受信することができるように構成され、ここで、この例では「Ｙ」は１１に等しい。乗算ベクトルデータ入力サンプルセット４６６（１１）〜４６６（０）は、実行ユニット８４の設計に従って、複数の入力データパスＡ３〜Ａ０、Ｂ３〜Ｂ０、およびＣ３〜Ｃ０内で供給される。ベクトルデータ入力サンプルセット４６６（３）〜４６６（０）は、図３５に示されたように、入力データパスＣ３〜Ｃ０に対応する。ベクトルデータ入力サンプルセット４６６（７）〜４６６（４）は、図３５に示されたように、入力データパスＢ３〜Ｂ０に対応する。ベクトルデータ入力サンプルセット４６６（１１）〜４６６（８）は、図３５に示されたように、入力データパスＡ３〜Ａ０に対応する。複数の乗算器ブロック４６２（３）〜４６２（０）は、ベクトル乗算演算を提供するために、それぞれ、複数の乗算器ブロック４６２（３）〜４６２（０）に供給された、入力データパスＡ３〜Ａ０、Ｂ３〜Ｂ０、Ｃ３〜Ｃ０に従って受信されたベクトルデータ入力サンプルセット４６６（１１）〜４６６（０）を処理するように構成される。
【０２０７】
[00252]図３７および図３８に関して下記でより詳細に説明されるように、図３５の乗算器ブロック４６２（３）〜４６２（０）内に設けられたプログラム可能な内部データパス４６７（３）〜４６７（０）は、様々なデータパス構成を有するようにプログラムされ得る。これらの様々なデータパス構成は、各乗算器ブロック４６２（３）〜４６２（０）に供給された、特定の入力データパスＡ３〜Ａ０、Ｂ３〜Ｂ０、Ｃ３〜Ｃ０に従って乗算器ブロック４６２（３）〜４６２（０）に供給された、特定の受信されたベクトルデータ入力サンプルセット４６６（１１）〜４６６（０）の様々な組合せおよび／または様々なビット長の乗算を提供する。この関連で、複数の乗算器ブロック４６２（３）〜４６２（０）は、ベクトルデータ入力サンプルセット４６６（１１）〜４６６（０）の特定の組合せを一緒に乗算した乗算結果を備えるベクトル結果出力サンプルセットとして、ベクトル乗算出力サンプルセット４６８（３）〜４６８（０）を供給する。
【０２０８】
[00253]たとえば、乗算器ブロック４６２（３）〜４６２（０）のプログラム可能な内部データパス４６７（３）〜４６７（０）は、図２のベースバンドプロセッサ２０の命令ディスパッチ回路４８内のベクトル命令デコーダから供給される設定値に従ってプログラムされ得る。この実施形態では、乗算器ブロック４６２（３）〜４６２（０）の４つのプログラム可能な内部データパス４６７（３）〜４６７（０）がある。ベクトル命令は、実行ユニット８４によって実行されるべき特定のタイプの演算を指定する。したがって、実行ユニット８４は、高効率な方式で同じ共通回路を用いて様々なタイプのベクトル乗算演算を提供するために、乗算器ブロック４６２（３）〜４６２（０）のプログラム可能な内部データパス４６７（３）〜４６７（０）を構成するようにプログラムおよび再プログラムされ得る。たとえば、実行ユニット８４は、乗算器ブロック４６２（３）〜４６２（０）のプログラム可能な内部データパス４６７（３）〜４６７（０）を、命令ディスパッチ回路４８内の命令パイプラインにおけるベクトル命令の復号に従って、実行されるベクトル命令ごとにクロックサイクルごとに構成および再構成するようにプログラムされ得る。したがって、実行ユニット８４内のＭ０乗算ベクトルパイプラインステージ４６０（１）が、クロックサイクルごとにベクトルデータ入力サンプルセット４６６を処理するように構成されている場合、結果として、乗算器ブロック４６２（３）〜４６２（０）は、命令ディスパッチ回路４８内の命令パイプラインにおけるベクトル命令の復号に従って、クロックサイクルごとにベクトル乗算演算を実行する。
【０２０９】
[00254]乗算器ブロック４６２は、実数乗算と虚数乗算とを実行するようにプログラムされ得る。引き続き図３５を参照すると、あるベクトル処理ブロックデータパス構成において、乗算器ブロック４６２は、２つの８ビットベクトルデータ入力サンプルセット４６６を一緒に乗算するように構成される場合がある。ある乗算ブロックデータパス構成では、乗算器ブロック４６２は、２つの１６ビットベクトルデータ入力サンプルセット４６６を一緒に乗算するように構成される場合があり、これらは、８ビットベクトルデータ入力サンプルセット４６６の第２のペアと乗算された８ビットベクトルデータ入力サンプルセット４６６の第１のペアから形成される。これは図３８に示され、下記でより詳細に説明される。やはり、乗算器ブロック４６２（３）〜４６２（０）内にプログラム可能なデータパス構成を設けることにより、乗算器ブロック４６２（３）〜４６２（０）が、実行ユニット８４内の面積を削減し、場合によっては、所望のベクトル処理動作を遂行するためにベースバンドプロセッサ２０内により少ない実行ユニット８４が設けられることを可能にするために、様々なタイプの乗算演算を実行するように構成および再構成され得るという柔軟性がもたらされる。
【０２１０】
[00255]図３５に戻って参照すると、複数の乗算器ブロック４６２（３）〜４６２（０）は、プログラム可能な出力データパス４７０（３）〜４７０（０）内のベクトル乗算出力サンプルセット４６８（３）〜４６８（０）を、次のベクトル処理ステージ４６０または出力処理ステージのいずれかに供給するように構成される。ベクトル乗算出力サンプルセット４６８（３）〜４６８（０）は、複数の乗算器ブロック４６２（３）〜４６２（０）によって実行されているベクトル命令に基づいてプログラムされた構成に従って、プログラム可能な出力データパス４７０（３）〜４７０（０）内で供給される。この例では、プログラム可能な出力データパス４７０（３）〜４７０（０）内のベクトル乗算出力サンプルセット４６８（３）〜４６８（０）は、下記で説明されるように、累算のためにＭ１累算ベクトルパイプラインステージ４６０（２）に供給される。実行ユニット８４のこの特定の設計では、複数の乗算器ブロック４６２（３）〜４６２（０）と、続いて、ベクトルデータ入力の乗算、それに続く乗算結果の累算を要求する特殊なベクトル命令をサポートする累算器とを設けることが望ましい。たとえば、ＦＦＴ演算を提供するために通常使用される、基数２および基数４のバタフライ演算は、一連の乗算演算、それに続く乗算結果の累算を含む。しかしながら、実行ユニット８４内に設けられるベクトル処理ブロックのこれらの組合せは例示的であり、限定的でないことに留意されたい。プログラム可能なデータパス構成を有するＶＰＥは、ベクトル処理ブロックを有する１つまたは他の任意の数のベクトル処理ステージを含むように構成される可能性がある。ベクトル処理ブロックは、設計および実行ユニットによってサポートされるように設計された特定のベクトル命令に従って、任意のタイプの演算を実行するために設けられる可能性がある。
【０２１１】
[00256引き続き図３５を参照すると、この実施形態では、ベクトル乗算出力サンプルセット４６８（３）〜４６８（０）は、Ｍ１累算ベクトル処理ステージ４６０（２）である次のベクトル処理ステージ内に設けられた複数の累算器ブロック４７２（３）〜４７２（０）に供給される。複数の累算器ブロック４７２（Ａ）〜４７２（０）の中の各累算器ブロックは、２つの累算器４７２（Ｘ）（１）および４７２（Ｘ）（０）（すなわち、４７２（３）（１）、４７２（３）（０）、４７２（２）（１）、４７２（２）（０）、４７２（１）（１）、４７２（１）（０）、および４７２（０）（１）、４７２（０）（０））を含んでいる。複数の累算器ブロック４７２（３）〜４７２（０）は、ベクトル乗算出力サンプルセット４６８（３）〜４６８（０）の結果を累算する。図３９および図４０に関して下記でより詳細に説明されるように、複数の累算器ブロック４７２（３）〜４７２（０）は桁上げ保存累算器として設けられ得るし、ここで、桁上げ積は本質的に、累算演算が完了されるまで累算プロセス中保存され、伝搬されない。複数の累算器ブロック４７２（３）〜４７２（０）は、複数の累算器ブロック４７２（３）〜４７２（０）において冗長桁上げ保存フォーマットを提供するために、図３５および図３７の複数の乗算器ブロック４６２（３）〜４６２（０）と融合されるオプションも有する。複数の累算器ブロック４７２（３）〜４７２（０）において冗長桁上げ保存フォーマットを提供することにより、複数の累算器ブロック４７２（３）〜４７２（０）内の累算の各ステップの間に、桁上げ伝搬パスと桁上げ伝搬加算演算とを提供する必要をなくすことができる。Ｍ１累算ベクトル処理ステージ４６０（２）およびその複数の累算器ブロック４７２（３）〜４７２（０）が、図３５を参照して次に紹介される。
【０２１２】
[00257]図３５を参照すると、Ｍ１累算ベクトル処理ステージ４６０（２）内の複数の累算器ブロック４７２（３）〜４７２（０）は、累算器出力サンプルセット４７６（３）〜４７６（０）（すなわち、４７６（３）（１）、４７６（３）（０）、４７６（２）（１）、４７６（２）（０）、４７６（１）（１）、４７６（１）（０）、および４７６（０）（１）、４７６（０）（０））を、次のベクトル処理ステージ４６０または出力処理ステージのいずれかにおいて供給するために、プログラム可能な出力データパス構成に従って、プログラム可能な出力データパス４７４（３）〜４７４（０）（すなわち、４７４（３）（１）、４７４（３）（０）、４７４（２）（１）、４７４（２）（０）、４７４（１）（１）、４７４（１）（０）、および４７４（０）（１）、４７４（０）（０））内でベクトル乗算出力サンプルセット４６８（３）〜４６８（０）を累算するように構成される。この例では、累算器出力サンプルセット４７６（３）〜４７６（０）は、ＡＬＵ処理ステージ４６０（３）である出力処理ステージに供給される。たとえば、下記でより詳細に説明されるように、累算器出力サンプルセット４７６（３）〜４７６（０）はまた、非限定的な例として、図２のベースバンドプロセッサ２０内のスカラープロセッサ４４内のＡＬＵ４６に供給され得る。たとえば、ＡＬＵ４６は、より一般的な処理動作において使用されるために、実行ユニット８４によって実行される特殊なベクトル命令に従って、累算器出力サンプルセット４７６（３）〜４７６（０）を取る場合がある。
【０２１３】
[00258]図３５に戻って参照すると、累算器ブロック４７２（３）〜４７２（０）のプログラム可能な入力データパス４７８（３）〜７８（０）および／またはプログラム可能な内部データパス４８０（３）〜４８０（０）は、乗算器ブロック４６２（３）〜４６２（０）から累算器ブロック４７２（３）〜４７２（０）に供給された、様々な組合せおよび／またはビット長のベクトル乗算出力サンプルセット４６８（３）〜４６８（０）を受信するように再構成されるようにプログラムされ得る。各累算器ブロック４７２は、２つの累算器４７２（Ｘ）（１）、４７２（Ｘ）（０）から構成されるので、プログラム可能な入力データパス４７８（Ａ）〜４７８（０）は、４７８（３）（１）、４７８（３）（０）、４７８（２）（１）、４７８（２）（０）、４７８（１）（１）、４７８（１）（０）、および４７８（０）（１）、４７８（０）（０）として図３５に示されている。同様に、プログラム可能な内部データパス４８０（３）〜４８０（０）は、４８０（３）（１）、４８０（３）（０）、４８０（２）（１）、４８０（２）（０）、４８０（１）（１）、４８０（１）（０）、４８０（０）（１）、４８０（０）（０）として図３５に示されている。累算器ブロック４７２（３）〜４７２（０）内にプログラム可能な入力データパス４７８（３）〜４７８（０）および／またはプログラム可能な内部データパス４８０（３）〜４８０（０）を設けることは、図３９および図４０に関して下記でより詳細に説明される。このようにして、累算器ブロック４７２（３）〜４７２（０）のプログラム可能な入力データパス４７８（３）〜４７８（０）および／またはプログラム可能な内部データパス４８０（３）〜４８０（０）に従って、累算器ブロック４７２（３）〜４７２（０）は、累算されたベクトル乗算出力サンプルセット４６８（３）〜４６８（０）のプログラムされた組合せに従って、累算器出力サンプルセット４７６（３）〜４７６（０）を供給することができる。やはり、これにより、累算器ブロック４７２（３）〜４７２（０）が、実行ユニット８４内の面積を削減し、場合によっては、所望のベクトル処理動作を遂行するために、ベースバンドプロセッサ２０内により少ない実行ユニット８４が設けられることを可能にするために、プログラム可能な入力データパス４７８（３）〜４７８（０）および／またはプログラム可能な内部データパス４８０（３）〜４８０（０）のプログラミングに基づいて、様々なタイプの累算演算を実行するように構成および再構成され得るという柔軟性がもたらされる。
【０２１４】
[00259]たとえば、ある累算器モード構成では、２つの累算器ブロック４７２のプログラム可能な入力データパス４７８および／またはプログラム可能な内部データパス４８０は、非限定的な例として、単一の４０ビット累算器を提供するようにプログラムされ得る。別の累算器モード構成では、２つの累算器ブロック４７２のプログラム可能な入力データパス４７８および／またはプログラム可能な内部データパス４８０は、非限定的な例として、二重２４ビット累算器を提供するようにプログラムされ得る。別の累算器モード構成では、２つの累算器ブロック４７２のプログラム可能な入力データパス４７８および／またはプログラム可能な内部データパス４８０は、１６ビット桁上げ保存加算器、それに続く単一の２４ビット累算器を提供するようにプログラムされ得る。乗算演算と累算演算の特定の様々な組合せも、乗算器ブロック４６２（３）〜４６２（０）および累算器ブロック４７２（３）〜４７２（０）（たとえば、１６ビット累算を用いる１６ビット虚数乗算、および１６ビット累算を用いる３２ビット虚数乗算）のプログラミングに従って、実行ユニット８４によってサポートされ得る。
【０２１５】
[00260]累算器ブロック４７２（３）〜４７２（０）のプログラム可能な入力データパス４７８（３）〜４７８（０）および／またはプログラム可能な内部データパス４８０（３）〜４８０（０）は、図２のベースバンドプロセッサ２０の命令ディスパッチ回路４８内のベクトル命令デコーダから供給される設定値に従ってプログラムされ得る。ベクトル命令は、実行ユニット８４によって実行されるべき特定のタイプの演算を指定する。したがって、実行ユニット８４は、累算器ブロック４７２（３）〜４７２（０）のプログラム可能な入力データパス４７８（３）〜４７８（０）および／またはプログラム可能な内部データパス４８０（３）〜４８０（０）を、命令ディスパッチ回路４８内の命令パイプラインにおけるベクトル命令の復号に従って実行されるベクトル命令ごとに、再プログラムするように構成され得る。ベクトル命令は、実行ユニット８４の１つまたは複数のクロックサイクルにわたって実行することができる。また、この例では、実行ユニット８４は、累算器ブロック４７２（３）〜４７２（０）のプログラム可能な入力データパス４７８（３）〜４７８（０）および／またはプログラム可能な内部データパス４８０（３）〜４８０（０）を、クロックサイクルごとにベクトル命令のクロックサイクルごとに、再プログラムするように構成され得る。したがって、たとえば、実行ユニット８４内のＭ１累算ベクトル処理ステージ４６０（２）によって実行されるベクトル命令が、クロックサイクルごとにベクトル乗算出力サンプルセット４６８（３）〜４６８（０）を処理する場合、結果として、累算器ブロック４７２（３）〜４７２（０）のプログラム可能な入力データパス４７８（３）〜４７８（０）および／またはプログラム可能な内部データパス４８０（３）〜４８０（０）は、ベクトル命令の実行中、クロックサイクルごとに再構成され得る。
【０２１６】
[00261]図３６は、例示的なベクトル処理のさらなる説明を提供するために、図２および図３５の実行ユニット８４内の乗算器ブロック４６２（Ａ）〜４６２（０）および累算器ブロック４７２（Ａ）（１）〜４７２（０）（０）の例示的なベクトル処理を示すフローチャートである。乗算器ブロック４６２（Ａ）〜４６２（０）および累算器ブロック４７２（Ａ）（１）〜４７２（０）（０）は、各々プログラム可能なデータパス構成を有し、図２および図３５の例示的な実行ユニット８４内の様々なベクトル処理ステージ内に設けられる。たとえば、ＦＦＴベクトル演算は、乗算演算と、それに続く累算演算とを伴う。
【０２１７】
[00262]この関連で、図３６に関して、ベクトル処理は、入力処理ステージ４６０（０）内の複数の入力データパスＡ３〜Ｃ０の中の入力データパス内で、ベクトルアレイの幅の複数の乗算ベクトルデータサンプルセット３４（Ｙ）〜３４（０）を受信することを伴う（ブロック５０１）。ベクトル処理は、次いで、複数の乗算器ブロック４６２（Ａ）〜４６２（０）内の複数の入力データパスＡ３〜Ｃ０から乗算ベクトルデータサンプルセット３４（Ｙ）〜３４（０）を受信することを含む（ブロック５０３）。ベクトル処理は、次いで、ベクトル処理ステージ４６０（１）によって実行されるベクトル命令に従って、乗算器ブロック４６２（Ａ）〜４６２（０）のためのプログラム可能なデータパス構成に基づいて、複数の乗算出力データパス４７０（Ａ）〜４７０（０）の中の乗算出力データパス４７０（Ａ）〜４７０（０）内に乗算ベクトル結果出力サンプルセット４６８（Ａ）〜４６８（０）を供給するために、乗算ベクトルデータサンプルセット３４（Ｙ）〜３４（０）を乗算することを含む（ブロック５０５）。ベクトル処理は、次に、複数の累算器ブロック４７２（Ａ）（１）〜４７２（０）（０）内の複数の乗算出力データパス４７０（Ａ）〜４７０（０）から乗算ベクトル結果出力サンプルセット４６８（Ａ）〜４６８（０）を受信することを含む（ブロック５０７）。ベクトル処理は、次に、第２のベクトル処理ステージ４６０（２）によって実行されるベクトル命令に従って、累算器ブロック４７２（Ａ）（１）〜４７２（０）（０）のためのプログラム可能な入力データパス４７８（Ａ）（１）〜４７８（０）（０）、プログラム可能な内部データパス４８０（Ａ）（１）〜４８０（０）（０）、およびプログラム可能な出力データパス４７４（Ａ）（１）〜４７４（０）（０）の構成に基づいて、累算器出力サンプルセット４７６（Ａ）（１）〜４７６（０）（０）を供給するために、乗算ベクトル結果出力サンプルセット４６８（Ａ）〜４６８（０）を一緒に累算することを含む（ブロック５０９）。ベクトル処理は、次いで、プログラム可能な出力データパス４７４（Ａ）（１）〜４７４（０）（０）内に累算器出力サンプルセット４７６（Ａ）（１）〜４７６（０）（０）を供給することを含む（ブロック５１１）。ベクトル処理は、次いで、出力ベクトル処理ステージ４６０（３）内の累算器ブロック４７２（Ａ）（１）〜４７２（０）（０）から累算器出力サンプルセット４７６（Ａ）（１）〜４７６（０）（０）を受信することを含む（ブロック５１３）。
【０２１８】
[00263]プログラム可能なデータパス構成を有するベクトル処理ブロックを利用する、図３５の例示的な実行ユニット８４および図３６のベクトル処理の概要が記載されたので、説明の残りは、図３７〜図４０におけるこれらのベクトル処理ブロックのより例示的な、非限定的な詳細を記載する。
【０２１９】
[00264]この関連で、図３７は、図３５の実行ユニット８４のＭ０乗算ベクトル処理ステージ４６０（１）内の複数の乗算器ブロック４６２（３）〜４６２（０）のより詳細な概略図である。図３８は、図３７の乗算器ブロック４６２の内部構成要素の概略図である。図３７に示されたように、特定の入力データパスＡ３〜Ａ０、Ｂ３〜Ｂ０、Ｃ３〜Ｃ０に従って、乗算器ブロック４６２（３）〜４６２（０）によって受信されるベクトルデータ入力サンプルセット４６６（１１）〜４６６（０）が示されている。図３８に関して下記でより詳細に説明されるように、この例における乗算器ブロック４６２（３）〜４６２（０）の各々は、４つの８ビット×８ビット乗算器を含む。図３７に戻って参照すると、この例における乗算器ブロック４６２（３）〜４６２（０）の各々は、被乗数入力「Ａ」を被乗数入力「Ｂ」または被乗数入力「Ｃ」のいずれかと乗算するように構成される。乗算器ブロック４６２において一緒に乗算され得る被乗数入力「Ａ」および「Ｂ」または「Ｃ」は、図３７に示されたように、どの入力データパスＡ３〜Ａ０、Ｂ３〜Ｂ０、Ｃ３〜Ｃ０が乗算器ブロック４６２（３）〜４６２（０）に接続されるかによって制御される。被乗数選択器入力４８２（３）〜４８２（０）は、被乗数入力「Ｂ」または被乗数入力「Ｃ」のどちらが被乗数入力「Ａ」と乗算されるために選択されるかを選択するように、各乗算器ブロック４６２（３）〜４６２（０）内のプログラム可能な内部データパス４６７（３）〜４６７（０）を制御するために、各乗算器ブロック４６２（３）〜４６２（０）に入力として供給される。このようにして、乗算器ブロック４６２（３）〜４６２（０）は、必要に応じて、それらのプログラム可能な内部データパス４６７（３）〜４６７（０）が様々な乗算演算を提供するように再プログラムされるための能力を提供される。
【０２２０】
[00265]引き続き図３７を参照すると、一例として乗算器ブロック４６２（３）を使用すると、入力データパスＡ３およびＡ２は、それぞれ入力ＡＨおよびＡＬに接続される。入力ＡＨは被乗数入力Ａの上位ビットを表し、ＡＬは入力被乗数入力「Ａ」の下位ビットを意味する。入力データパスＢ３およびＢ２は、それぞれ入力ＢＨおよびＢＬに接続される。入力ＢＨは被乗数入力「Ｂ」の上位ビットを表し、ＡＬは入力被乗数入力「Ｂ」の下位ビットを表す。入力データパスＣ３およびＣ２は、それぞれ入力ＣＩおよびＣＱに接続される。入力ＣＩは、この例では入力被乗数入力「Ｃ」の実数ビット部分を表す。ＣＱは、この例では入力被乗数入力「Ｃ」の虚数ビット部分を表す。図３８に関して下記でより詳細に説明されるように、被乗数選択器入力４８２（３）はまた、この例では、乗算器ブロック４６２（３）のプログラム可能な内部データパス４６７（３）が、被乗数入力「Ａ」に対する８ビット乗算を被乗数入力「Ｂ」または被乗数入力「Ｃ」のいずれと実行するように構成されるか、または乗算器ブロック４６２（３）が、被乗数入力「Ａ」に対する１６ビット乗算を被乗数入力「Ｂ」または被乗数入力「Ｃ」のいずれと実行するように構成されるかを制御する。
【０２２１】
[00266]引き続き図３７を参照すると、乗算器ブロック４６２（３）〜４６２（０）は、各々、それらのプログラム可能な内部データパス４６７（３）〜４６７（０）の構成に基づいて、乗算演算の桁上げ「Ｃ」および和「Ｓ」のベクトル出力サンプルセットとして、ベクトル乗算出力サンプルセット４６８（３）〜４６８（０）を生成するように構成される。図３９および図４０に関して下記でより詳細に説明されるように、ベクトル乗算出力サンプルセット４６８（３）〜４６８（０）の桁上げ「Ｃ」および和「Ｓ」は融合され、桁上げ「Ｃ」および和「Ｓ」が、複数の累算器ブロック４７２（３）〜４７２（０）において冗長桁上げ保存フォーマットを提供するために、複数の累算器ブロック４７２（３）〜４７２（０）に冗長桁上げ保存フォーマットで供給されることを意味する。下記でより詳細に説明されるように、複数の累算器ブロック４７２（３）〜４７２（０）において冗長桁上げ保存フォーマットを提供することにより、複数の累算器ブロック４７２（３）〜４７２（０）によって実行される累算演算中に、桁上げ伝搬パスと桁上げ伝搬加算演算とを提供する必要をなくすことができる。
【０２２２】
[00267]それらのプログラム可能な内部データパス４６７（３）〜４６７（０）の構成に基づいて、乗算演算の桁上げ「Ｃ」および和「Ｓ」のベクトル出力サンプルセットとして、ベクトル乗算出力サンプルセット４６８（３）〜４６８（０）を生成する乗算器ブロック４６２（３）〜４６２（０）の例が図３７に示される。たとえば、乗算器ブロック４６２（３）は、８ビット乗算のための３２ビット値として桁上げＣ００と和Ｓ００とを生成し、１６ビット乗算のための６４ビット値として桁上げＣ０１と和Ｓ０１とを生成するように構成される。他の乗算器ブロック４６２（２）〜４６２（０）は、この例では同じ能力を有する。この関連で、乗算器ブロック４６２（２）は、８ビット乗算のための３２ビット値として桁上げＣ１０と和Ｓ１０とを生成し、１６ビット乗算のための６４ビット値として桁上げＣ１１と和Ｓ１１とを生成するように構成される。乗算器ブロック４６２（１）は、８ビット乗算のための３２ビット値として桁上げＣ２０と和Ｓ２０とを生成し、１６ビット乗算のための６４ビット値として桁上げＣ２１と和Ｓ２１とを生成するように構成される。乗算器ブロック４６２（０）は、８ビット乗算のための３２ビット値として桁上げＣ３０と和Ｓ３０とを生成し、１６ビット乗算のための６４ビット値として桁上げＣ３１と和Ｓ３１とを生成するように構成される。
【０２２３】
[00268]図３７の乗算器ブロック４６２内に設けられるプログラム可能なデータパス構成のより例示的な詳細を説明するために、図３８が提供される。図３８は、８ビット×８ビットベクトルデータ入力サンプルセット４６６と、１６ビット×１６ビットベクトルデータ入力サンプルセット４６６とを乗算することが可能な、プログラム可能なデータパス構成を有する、図３７の乗算器ブロック４６２の内部構成要素の概略図である。この関連で、乗算器ブロック４６２は、この例では４つの８×８ビット乗算器４８４（３）〜４８４（０）を含む。任意の所望の数の乗算器４８４が設けられる可能性がある。第１の乗算器４８４（３）は、（入力被乗数入力「Ａ」の上位ビットである）８ビットベクトルデータ入力サンプルセット４６６Ａ［Ｈ］を受信し、ベクトルデータ入力サンプルセット４６６Ａ［Ｈ］を、（入力被乗数入力「Ｂ」の上位ビットである）８ビットベクトルデータ入力サンプルセット４６６Ｂ［Ｈ］または（入力被乗数入力「Ｃ」の上位ビットである）８ビットベクトルデータ入力サンプルセット４６６Ｃ［Ｉ］のいずれかと乗算するように構成される。乗算器４８４（３）に被乗数として供給している８ビットベクトルデータ入力サンプルセット４６６Ｂ［Ｈ］または８ビットベクトルデータ入力サンプルセット４６６Ｃ［Ｉ］のいずれかを選択するように構成された、マルチプレクサ４８６（３）が設けられる。マルチプレクサ４８６（３）は、この実施形態では、被乗数選択器入力４８２内の上位ビットである被乗数選択器入力４８２［３］によって制御される。このようにして、マルチプレクサ４８６（３）および被乗数選択器入力４８２［３］は、８ビットベクトルデータ入力サンプルセット４６６Ｂ［Ｈ］または８ビットベクトルデータ入力サンプルセット４６６Ｃ［Ｉ］のどちらが、受信されたベクトルデータ入力サンプルセット４６６Ａ［Ｈ］と乗算されるかを、乗算器４８４（３）が制御するためのプログラム可能な内部データパス４６７［０］構成を提供する。
【０２２４】
[00269]引き続き図３８を参照すると、他の乗算器４８４（２）〜４８４（０）も、第１の乗算器４８４（３）用に設けられたものと同様のプログラム可能な内部データパス４６７［２］〜４６７［０］を含む。乗算器４８４（２）は、被乗数入力「Ａ」の下位ビットである８ビットベクトルデータ入力サンプルセット４６６Ａ［Ｌ］と乗算されるべき、８ビットベクトルデータ入力サンプルセット４６６Ｂ［Ｈ］または８ビットベクトルデータ入力サンプルセット４６６Ｃ［Ｉ］のいずれかを、プログラム可能な内部データパス４６７［１］内に供給するためのプログラム可能な構成を有する、プログラム可能な内部データパス４６７［２］を含む。選択は、この実施形態では、被乗数選択器入力４８２内の被乗数選択器入力４８２［２］に従って、マルチプレクサ４８６（２）によって制御される。乗算器４８４（１）は、８ビットベクトルデータ入力サンプルセット４６６Ａ［Ｈ］と乗算されるべき、被乗数入力「Ｂ」の下位ビットである８ビットベクトルデータ入力サンプルセット４６６Ｂ［Ｌ］、または被乗数入力「Ｃ」の下位ビットである８ビットベクトルデータ入力サンプルセット４６６Ｃ［Ｑ］のいずれかを、プログラム可能な内部データパス４６７［１］内に供給するようにプログラム可能な、プログラム可能な内部データパス４６７［１］を含む。選択は、この実施形態では、被乗数選択器入力４８２内の被乗数選択器入力４８２［１］に従って、マルチプレクサ４８６（１）によって制御される。さらに、乗算器４８４（０）は、８ビットベクトルデータ入力サンプルセット４６６Ａ［Ｌ］と乗算されるべき、８ビットベクトルデータ入力サンプルセット４６６Ｂ［Ｌ］または８ビットベクトルデータ入力サンプルセット４６６Ｃ［Ｑ］のいずれかを、プログラム可能な内部データパス４６７［０］内に供給するようにプログラム可能な、プログラム可能な内部データパス４６７［０］を含む。選択は、この実施形態では、乗数選択器入力４８２内の被乗数選択器ビット入力４８２［０］に従って、マルチプレクサ４８６（０）によって制御される。
【０２２５】
[00270]引き続き図３８を参照すると、上記で説明されたように、乗算器４８４（３）〜４８４（０）は、様々なビット長乗算演算を実行するように構成され得る。この関連で、各乗算器４８４（３）〜４８４（０）は、それぞれ、ビット長乗算モード入力４８８（３）〜４８８（０）を含む。この例では、各乗算器４８４（３）〜４８４（０）は、それぞれ、プログラム可能なデータパス４９０（３）〜４９０（０）、４９１、および４９２（３）〜４９２（０）の構成を制御する入力に従って、８ビット×８ビットモードでプログラムされ得る。各乗算器４８４（３）〜４８４（０）はまた、それぞれ、プログラム可能なデータパス４９０（３）〜４９０（０）、４９１、および４９２（３）〜４９２（０）の構成を制御する入力に従って、１６ビット×１６ビットモードと２４ビット×８ビットモードとを含む、より大きいビット乗算演算の一部を提供するようにプログラムされ得る。たとえば、各乗算器４８４（３）〜４８４（０）が、プログラム可能なデータパス４９０（３）〜４９０（０）の構成に従って８ビット×８ビット乗算モードで構成される場合、ユニットとしての複数の乗算器４８４（３）〜４８４（０）は、乗算器ブロック４６２の一部として２つの個々の８ビット×８ビット乗算器を備えるように構成され得る。各乗算器４８４（３）〜４８４（０）が、プログラム可能なデータパス４９１の構成に従って１６ビット×１６ビット乗算モードで構成される場合、ユニットとしての複数の乗算器４８４（３）〜４８４（０）は、乗算器ブロック４６２の一部として単一の１６ビット×１６ビット乗算器を備えるように構成され得る。乗算器４８４（３）〜４８４（０）が、プログラム可能なデータパス４９２（３）〜４９２（０）の構成に従って２４ビット×８ビット乗算モードで構成される場合、ユニットとしての複数の乗算器４８４（３）〜４８４（０）は、乗算器ブロック４６２の一部として１つの１６ビット×２４ビット×８ビット乗算器を備えるように構成され得る。
【０２２６】
[00271]引き続き図３８を参照すると、この例における乗算器４８４（３）〜４８４（０）は、１６ビット×１６ビット乗算モードで構成されるものとして示されている。１６ビットの入力和４９４（３）、４９４（２）および入力桁上げ４９６（３）、４９６（２）は、それぞれ、各乗算器４８４（３）、４８４（２）によって生成される。１６ビットの入力和４９４（１）、４９４（０）および入力桁上げ４９６（１）、４９６（０）は、それぞれ、各乗算器４８４（１）、４８４（０）によって生成される。１６ビットの入力和４９４（３）、４９４（２）および入力桁上げ４９６（３）、４９６（２）はまた、一緒に入力和４９４（３）〜４９４（０）と入力桁上げ４９６（３）〜４９６（０）とを加算するために、１６ビットの和入力４９４（１）、４９４（０）および入力桁上げ４９６（１）、４９６（０）とともに２４ビット４：２圧縮器５１５に供給される。加算された入力和４９４（３）〜４９４（０）および入力桁上げ４９６（３）〜４９６（０）は、プログラム可能なデータパス４９１がアクティブであり、入力和４９４（３）〜４９４（０）および入力桁上げ４９６（３）〜４９６（０）とゲート制御されるとき、１６ビット×１６ビット乗算モードで単一和４９８と単一桁上げ５００とをもたらす。プログラム可能なデータパス４９１は、２４ビット４：２圧縮器５１５に供給されるように、１６ビットワードとして、組み合わされた入力和４９４（３）、４９４（２）を有する第１のＡＮＤベースのゲート５０２（３）によって、および１６ビットワードとして、組み合わされた入力桁上げ４９６（３）、４９６（２）を有する第２のＡＮＤベースのゲート５０２（２）によってゲート制御される。プログラム可能なデータパス４９１はまた、２４ビット４：２圧縮器５１５に供給されるように、１６ビットワードとして、組み合わされた入力和４９４（１）、４９４（０）を有する第３のＡＮＤベースのゲート５０２（１）によって、および１６ビットワードとして、組み合わされた入力桁上げ４９６（１）、４９６（０）を有する第４のＡＮＤベースのゲート５０２（０）によってゲート制御される。乗算器ブロック４６２が１６ビット×１６ビット乗算モードまたは２４ビット×８ビット乗算モードで構成される場合、プログラム可能な出力データパス４７０［０］は、圧縮された３２ビット和Ｓ０および３２ビット桁上げＣ０部分積として、ベクトル乗算出力サンプルセット４６８［０］を供給される。
【０２２７】
[00272]乗算器ブロック４６２内の乗算器４８４（３）〜４８４（０）が８ビット×８ビット乗算モードで構成される場合、プログラム可能な出力データパス４７０［１］構成は、圧縮なしで、１６ビット入力和４９４（３）〜４９４（０）および部分積としての対応する１６ビット入力桁上げ４９６（３）〜４９６（０）として提供される。乗算器ブロック４６２内の乗算器４８４（３）〜４８４（０）が８ビット×８ビット乗算モードで構成される場合、プログラム可能な出力データパス４７０［１］は、圧縮なしで、１６ビット入力和４９４（３）〜４９４（０）およびベクトル乗算出力サンプルセット４６８［１］としての対応する１６ビット入力桁上げ４９６（３）〜４９６（０）として提供される。乗算器ブロック４６２の乗算モードに依存するベクトル乗算出力サンプルセット４６８［０］、４６８［１］は、実行されているベクトル命令に従って、和および桁上げ積の累算のために、累算器ブロック４７２（３）〜４７２（０）に供給される。
【０２２８】
[00273]プログラム可能なデータパス構成を有する、図３７および図３８の乗算器ブロック４６２（３）〜４６２（０）が記載されたので、冗長桁上げ保存フォーマットで構成された累算器ブロック４７２（３）〜４７２（０）と融合されるべき、実行ユニット８４内の乗算器ブロック４６２（３）〜４６２（０）の特徴が、図３９に関して次に概説される。
【０２２９】
[00274]この関連で、図３９は、上述された実行ユニット８４（０）〜８４（Ｘ）内の乗算器ブロックおよび累算器ブロックの一般化された概略図であり、ここで、累算器ブロックは、桁上げ伝搬を低減するために冗長桁上げ保存フォーマットを利用する桁上げ保存累算器構造を利用する。前に説明され、図３８に示されたように、乗算器ブロック４６２は、被乗数入力４６６［Ｈ］と４６６［Ｌ］とを乗算し、少なくとも１つの入力和４９４と少なくとも１つの入力桁上げ４９６とを、ベクトル乗算出力サンプルセット４６８として、プログラム可能な出力データパス４７０内に供給するように構成される。累算ステップごとに累算器ブロック４７２内に桁上げ伝搬パスと桁上げ伝搬加算器とを設ける必要をなくすために、プログラム可能な出力データパス４７０内のベクトル乗算出力サンプルセット４６８内の少なくとも１つの入力和４９４および少なくとも１つの入力桁上げ４９６が、少なくとも１つの累算器ブロック４７２に冗長桁上げ保存フォーマットで融合される。言い換えれば、ベクトル乗算出力サンプルセット４６８内の桁上げ４９６は、累算器ブロック４７２に桁上げ保存フォーマットでベクトル入力桁上げ４９６として供給される。このようにして、ベクトル乗算出力サンプルセット４６８内の入力和４９４および入力桁上げ４９６は、この実施形態では複合ゲート４：２圧縮器である累算器ブロック４７２の圧縮器５０８に供給され得る。圧縮器５０８は、入力和４９４および入力桁上げ４９６を、それぞれ、前の累算ベクトル出力和５１２および前のシフトされた累算ベクトル出力桁上げ５１７と一緒に累算するように構成される。前のシフトされた累算ベクトル出力桁上げ５１７は、本質的に、累算演算中の保存された桁上げ累算である。
【０２３０】
[00275]このようにして、受信された入力桁上げ４９６を累算器ブロック４７２によって生成された累算の一部として入力和４９４に伝搬するために、単一の最終桁上げ伝搬加算器のみが累算器ブロック４７２内に設けられることが必要である。累算器ブロック４７２内の累算の各ステップ中に、桁上げ伝搬加算演算を実行することに関連する電力消費が、この実施形態では低減される。また、累算器ブロック４７２内の累算の各ステップ中に、桁上げ伝搬加算演算を実行することに関連するゲート遅延も、この実施形態ではなくなる。
【０２３１】
[00276]引き続き図３９を参照すると、圧縮器５０８は、冗長な形式での入力和４９４および入力桁上げ４９６を、それぞれ、前の累算ベクトル出力和５１２および前のシフトされた累算ベクトル出力桁上げ５１７と累算するように構成される。シフトされた累算ベクトル出力桁上げ５１７は、次の受信された入力和４９４および入力桁上げ４９６の次の累算が圧縮器５０８によって実行される前に、累算ベクトル出力桁上げ５１４をシフトすることにより、圧縮器５０８によって生成された累算ベクトル出力桁上げ５１４によって生成される。最終的なシフトされた累算ベクトル出力桁上げ５１７は、最終的なシフトされた累算ベクトル出力桁上げ５１７内で桁上げ累算を伝搬して、最終累算ベクトル出力和５１２を最終累算器出力サンプルセット４７６  ２の補数表現に変換するために、累算器ブロック４７２内に設けられた単一の最終桁上げ伝搬加算器５１９によって最終累算ベクトル出力和５１２に加算される。最終累算ベクトル出力和５１２は、プログラム可能な出力データパス４７４内で累算器出力サンプルセット４７６として供給される（図３５参照）。
【０２３２】
[00277]冗長桁上げ保存フォーマットで構成された累算器ブロック４７２との乗算器ブロック４６２の融合を示す図３９が記載されたので、累算器ブロック４７２（３）〜４７２（０）に関するより例示的な詳細が、図４０に関してここで概説される。図４０は、図３５の実行ユニット８４内に設けられた累算器ブロック４７２の例示的な内部構成要素の詳細な概略図である。前に説明され、下記でより詳細に説明されるように、累算器ブロック４７２は、プログラム可能な入力データパス４７８（３）〜４７８（０）および／またはプログラム可能な内部データパス４８０（３）〜４８０（０）を用いて構成され、その結果、累算器ブロック４７２は、特定の異なるタイプのベクトル累算演算を実行するように設計された専用回路として働くようにプログラムされ得る。たとえば、累算器ブロック４７２は、符号付きおよび符号なしの累算演算を含む、いくつかの様々な累算と加算とを提供するようにプログラムされ得る。様々なタイプの累算演算を提供するように構成されている累算器ブロック４７２内のプログラム可能な入力データパス４７８（３）〜４７８（０）および／またはプログラム可能な内部データパス４８０（３）〜４８０（０）の具体例が開示される。また、累算器ブロック４７２は、低減された組合せ論理を用いて高速累算演算を提供するために、桁上げ伝搬を回避または低減するように冗長桁上げ算術を提供するために、桁上げ保存累算器４７２［０］、４７２［１］を含むように構成される。
【０２３３】
[00278]累算器ブロック４７２の例示的な内部構成要素が図４０に示される。そこに示されているように、この実施形態における累算器ブロック４７２は、一緒に累算されるために、第１の入力和４９４［０］および第１の入力桁上げ４９６［０］と、第２の入力和４９４［１］および第２の入力桁上げ４９６［１］とを乗算器ブロック４６２から受信するように構成される。図４０に関して、入力和４９４［０］、４９４［１］および入力桁上げ４９６［０］、４９６［１］は、ベクトル入力和４９４［０］、４９４［１］およびベクトル入力桁上げ４９６［０］、４９６［１］と呼ばれる。前述され、図３９に示されたように、この実施形態におけるベクトル入力和４９４［０］、４９４［１］およびベクトル入力桁上げ４９６［０］、４９６［１］は、各々長さが１６ビットである。この例における累算器ブロック４７２は、２つの２４ビット桁上げ保存累算器ブロック４７２［０］、４７２［１］として設けられ、「［０］」が桁上げ保存累算器４７２［０］用に指定され、「［１］」が桁上げ保存累算器４７２［１］用に指定される、共通要素番号を有する同様の構成要素を各々が含んでいる。桁上げ保存累算器４７２［０］、４７２［１］は、同時にベクトル累算演算を実行するように構成され得る。
【０２３４】
[00279]図４０の桁上げ保存累算器４７２［０］を参照すると、ベクトル入力和４９４［０］およびベクトル入力桁上げ４９６［０］は、プログラム可能な内部データパス４８０［０］の一部として設けられたマルチプレクサ５０４（０）内の入力である。負のベクトル入力和４９４［０］’と負のベクトル入力桁上げ４９６［０］’とを必要とする累算演算のための、マルチプレクサ５０４（０）への入力として、入力５２１（０）に従って負のベクトル入力和４９４［０］’と負のベクトル入力桁上げ４９６［０］’とを生成する、排他的ＯＲベースのゲートから構成され得る否定回路５０６（０）も設けられる。マルチプレクサ５０４（０）は、ベクトル命令復号の結果として生成された、選択器入力５１０（０）に従って圧縮器５０８（０）に供給されるべき、ベクトル入力和４９４［０］およびベクトル入力桁上げ４９６［０］、または負のベクトル入力和４９４［０］’および負のベクトル入力桁上げ４９６［０］’のいずれかを選択するように構成される。この関連で、選択器入力５１０（０）により、累算器ブロック４７２によって実行されるように構成された累算演算に従って、桁上げ保存累算器４７２［０］のプログラム可能な入力データパス４７８［０］が、ベクトル入力和４９４［０］およびベクトル入力桁上げ４９６［０］、または負のベクトル入力和４９４［０］’および負のベクトル入力桁上げ４９６［０］’のいずれかを圧縮器５０８（０）に供給するようにプログラム可能になる。
【０２３５】
[00280]引き続き図４０を参照すると、この実施形態における桁上げ保存累算器ブロック４７２［０］の圧縮器５０８（０）は、複合ゲート４：２圧縮器である。この関連で、圧縮器５０８（０）は、冗長桁上げ保存演算において和と桁上げとを累算するように構成される。圧縮器５０８（０）は、圧縮器５０８（０）への４つの入力として、現在のベクトル入力和４９４［０］およびベクトル入力桁上げ４９６［０］、または現在の負のベクトル入力和４９４［０］’および負のベクトル入力桁上げ４９６［０］’を、前の累算されたベクトル入力和４９４［０］およびベクトル入力桁上げ４９６［０］、または累算された負のベクトル入力和４９４［０］’および負のベクトル入力桁上げ４９６［０］’と一緒に累算するように構成される。圧縮器５０８（０）は、累算器出力サンプルセット４７６（３）〜４７６（０）を供給するために、プログラム可能な出力データパス４７４［０］（図３５参照）内の累算器出力サンプルセット４７６［０］として、累算ベクトル出力和５１２（０）と累算ベクトル出力桁上げ５１４（０）とを供給する。累算ベクトル出力桁上げ５１４（０）は、各累算ステップ中にビット幅成長を制御するために、シフトされた累算ベクトル出力桁上げ５１７（０）を供給するように、累算演算中にビットシフタ５１６（０）によってシフトされる。たとえば、この実施形態におけるビットシフタ５１６（０）は、冗長桁上げ保存フォーマットで圧縮器５０８（０）に融合されるバレルシフタである。このようにして、シフトされた累算ベクトル出力桁上げ５１７（０）は、本質的に、累算器ブロック４７２［０］によって実行される累算演算中に、累算ベクトル出力和５１２（０）に伝搬される必要なしに保存される。このようにして、累算器ブロック４７２［０］内の累算の各ステップ中に桁上げ伝搬加算演算を実行することに関連する電力消費およびゲート遅延が、この実施形態ではなくなる。
【０２３６】
[00281]さらなる後続のベクトル入力和４９４［０］およびベクトル入力桁上げ４９６［０］、または負のベクトル入力和４９４［０］’および負のベクトル入力桁上げ４９６［０］’は、現在の累算ベクトル出力和５１２（０）および現在の累算ベクトル出力桁上げ５１７（０）と累算され得る。ベクトル入力和４９４［０］およびベクトル入力桁上げ４９６［０］、または負のベクトル入力和４９４［０］’および負のベクトル入力桁上げ４９６［０］’は、ベクトル命令復号の結果として生成された、和桁上げ選択器５２０（０）に従うプログラム可能な内部データパス４８０［０］の一部として、マルチプレクサ５１８（０）によって選択される。現在の累算ベクトル出力和５１２（０）および現在のシフトされた累算ベクトル出力桁上げ５１７（０）は、桁上げ保存累算器ブロック４７２［０］が、更新された累算ベクトル出力和５１２（０）と累算ベクトル出力桁上げ５１４（０）とを供給するために、圧縮器５０８（０）への入力として供給され得る。この関連で、和桁上げ選択器５２０（０）により、累算器ブロック４７２［０］のプログラム可能な内部データパス４８０［０］が、累算器ブロック４７２によって実行されるように構成された累算演算に従って、圧縮器５０８（０）にベクトル入力和４９４［０］とベクトル入力桁上げ４９６［０］とを供給するようにプログラム可能になる。桁上げ保存累算器ブロック４７２［０］における累算の動作タイミングを制御するために、保持状態入力５２６（０）に従って累算ベクトル出力和５１２（０）およびシフトされた累算ベクトル出力桁上げ５１７（０）の現在の状態を、マルチプレクサ５１８（０）に保持させるために、この実施形態では保持ゲート５２２（０）、５２４（０）も提供される。
【０２３７】
[00282]引き続き図４０を参照すると、桁上げ保存累算器ブロック４７２［０］の累算ベクトル出力和５１２（０）およびシフトされた累算ベクトル出力桁上げ５１７（０）、ならびに桁上げ保存累算器ブロック４７２［１］の累算ベクトル出力和５１２（１）およびシフトされた累算ベクトル出力桁上げ５１７（１）は、それぞれ、制御ゲート５３４（０）、５３６（０）および５３４（１）、５３６（１）によってゲート制御される。制御ゲート５３４（０）、５３６（０）および５３４（１）、５３６（１）は、それぞれ、圧縮器５０８（０）、５０８（１）に戻される、累算ベクトル出力和５１２（０）およびシフトされた累算ベクトル出力桁上げ５１７（０）と、累算ベクトル出力和５１２（１）およびシフトされた累算ベクトル出力桁上げ５１７（１）とを制御する。
【０２３８】
[00283]要約すると、図４０の累算器ブロック４７２の累算器ブロック４７２［０］、４７２［１］のプログラム可能な入力データパス４７８［０］、４７８［１］およびプログラム可能な内部データパス４８０［０］、４８０［１］により、累算器ブロック４７２は様々なモードで構成され得る。累算器ブロック４７２は、図４０に示された共通累算器回路による特定のベクトル処理命令に従って、様々な累算演算を提供するように構成され得る。
【０２３９】
[00284]本明細書において説明された概念および実施形態によるＶＰＥは、任意のプロセッサベースのデバイス内に設けられるか、または任意のプロセッサベースのデバイスの中に統合される場合がある。限定はしないが、例には、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、携帯電話、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末（ＰＤＡ）、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク（ＤＶＤ）プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
【０２４０】
[00285]この関連で、図４１は、プロセッサベースのシステム５５０の例を示す。この例では、プロセッサベースのシステム５５０は、各々が１つまたは複数のプロセッサまたはコア５５４を含む、１つまたは複数の処理ユニット（ＰＵ）５５２を含む。ＰＵ５５２は、非限定的な例として、図２のベースバンドプロセッサ２０であり得る。プロセッサ５５４は、非限定的な例として、図２に提供されたベースバンドプロセッサ２０のようなベクトルプロセッサであり得る。この関連で、プロセッサ５５４は、図２の実行ユニット８４を含むが、それに限定されないＶＰＥ５５６を含む場合もある。ＰＵ５５２は、一時的に記憶されたデータへの高速アクセスのための、プロセッサ５５４に結合されたキャッシュメモリ５５８を有する場合がある。ＰＵ５５２は、システムバス５６０に結合され、プロセッサベースのシステム５５０に含まれるマスタデバイスとスレーブデバイスとを相互結合することができる。よく知られているように、ＰＵ５５２は、システムバス５６０を介してアドレスと、制御と、データ情報とを交換することによって、これらの他のデバイスと通信する。たとえば、ＰＵ５５２は、スレーブデバイスの例として、メモリコントローラ５６２にバストランザクション要求を通信することができる。図４１には示されていないが、複数のシステムバス５６０が提供される可能性があり、ここで、各システムバス５６０は様々なファブリックを構成する。
【０２４１】
[00286]他のマスタデバイスおよびスレーブデバイスが、システムバス５６０に接続され得る。図４１に示されたように、これらのデバイスには、例として、メモリシステム５６４、１つまたは複数の入力デバイス５６６、１つまたは複数の出力デバイス５６８、１つまたは複数のネットワークインターフェースデバイス５７０、および１つまたは複数のディスプレイコントローラ５７２が含まれ得る。メモリシステム５６４は、メモリコントローラ５６２によってアクセス可能なメモリ５６５を含むことができる。入力デバイス５６６は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス５６８は、限定はしないが、オーディオ、ビデオ、他の視覚的インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス５７０は、ネットワーク５７４との間のデータ交換を可能にするように構成された任意のデバイスであり得る。ネットワーク５７４は、限定はしないが、有線またはワイヤレスのネットワーク、専用または公共のネットワーク、ローカルエリアネットワーク（ＬＡＮ）、ワイドローカルエリアネットワーク（ＷＬＡＮ）、およびインターネットが含まれる、任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス５７０は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。
【０２４２】
[00287]ＰＵ５５２はまた、１つまたは複数のディスプレイ５７８に送られる情報を制御するために、システムバス５６０を介してディスプレイコントローラ５７２にアクセスするように構成される場合がある。ディスプレイコントローラ５７２は、１つまたは複数のビデオプロセッサ５８０を介して表示されるべき情報をディスプレイ５７８に送り、ビデオプロセッサ５８０は、表示されるべき情報をディスプレイ５７８に適したフォーマットに処理する。ディスプレイ５７８は、限定はしないが、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含むことができる。
【０２４３】
[00288]本明細書で開示された二重電圧ドメインメモリバッファの実施形態とともに記載された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子ハードウェアとして、メモリもしくは別のコンピュータ可読媒体に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令として、または両方の組合せとして実装され得ることが、当業者ならさらに諒解されよう。本明細書に記載されたアービタ、マスタデバイス、およびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路（ＩＣ）、またはＩＣチップ内で利用される場合がある。本明細書で開示されたメモリは、任意のタイプおよびサイズのメモリであり得るし、所望の任意のタイプの情報を記憶するように構成される場合がある。この互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、概してそれらの機能に関して上述された。そのような機能性がどのように実装されるかは、特定の用途、設計選択、および／または全体的なシステムに課された設計制約に依存する。当業者は、特定の用途ごとに様々な方法で記載された機能を実装することができるが、そのような実装の決定は、本開示の範囲から逸脱する原因になると解釈されるべきではない。
【０２４４】
[00289]本明細書で開示された実施形態に関して記載された様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、ＤＳＰ、特定用途向け集積回路（ＡＳＩＣ）、ＦＰＧＡもしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論地、個別ハードウェア構成要素、または本明細書に記載された機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行される場合がある。プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、ＤＳＰとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと連携する１つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装される場合がある。
【０２４５】
[00290]本明細書で開示された実施形態は、ハードウェアにおいて、およびハードウェアに記憶された命令において具現化される場合があり、たとえば、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読取り専用メモリ（ＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ（登録商標））、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、または当技術分野で知られている任意の他の形態のコンピュータ可読媒体の中に存在する場合がある。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み出し、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体は、ＡＳＩＣの中に存在する場合がある。ＡＳＩＣはリモート局の中に存在する場合がある。代替として、プロセッサおよび記憶媒体は、個別構成要素としてリモート局、基地局、またはサーバの中に存在する場合がある。
【０２４６】
[00291]また、本明細書の例示的な実施形態のいずれかにおいて記載された動作ステップは、例および説明を提供するために記載されたことに留意されたい。記載された動作は、図示されたシーケンス以外の多数の様々なシーケンスにおいて実行される場合がある。さらに、単一の動作ステップにおいて記載された動作は、実際には、いくつかの様々なステップにおいて実行される場合がある。さらに、例示的な実施形態において説明された１つまたは複数の動作ステップは、組み合わされる場合がある。フローチャート図に示された動作ステップは、当業者には容易に明らかになるように、多数の様々な修正を受ける場合があることを理解されたい。情報および信号が様々な異なる技術および技法のいずれかを使用して表され得ることも当業者は理解されよう。たとえば、上記の説明全体を通して参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁気粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表される場合がある。
【０２４７】
[00292]本開示の前の説明は、当業者が本開示を製作または使用することを可能にするために提供される。本開示に対する様々な修正は当業者には容易に明らかになり、本明細書で定義された一般原理は、本開示の趣旨または範囲から逸脱することなく、他の変形形態に適用される場合がある。したがって、本開示は、本明細書に記載された例および設計に限定されるものではなく、本明細書で開示された原理および新規の特徴と一致する最も広い範囲が与えられるべきである。
【図１】
2016537725.tif 000006
【図２】
2016537725.tif 000007
【図３】
2016537725.tif 000008
【図４】
2016537725.tif 000009
【図５】
2016537725.tif 000010
【図６Ａ】
2016537725.tif 000011
【図６Ｂ】
2016537725.tif 000012
【図７】
2016537725.tif 000013
【図８】
2016537725.tif 000014
【図９Ａ】
2016537725.tif 000015
【図９Ｂ】
2016537725.tif 000016
【図９Ｃ】
2016537725.tif 000017
【図９Ｄ】
2016537725.tif 000018
【図１０】
2016537725.tif 000019
【図１１】
2016537725.tif 000020
【図１２Ａ】
2016537725.tif 000021
【図１２Ｂ】
2016537725.tif 000022
【図１３】
2016537725.tif 000023
【図１４】
2016537725.tif 000024
【図１５Ａ】
2016537725.tif 000025
【図１５Ｂ】
2016537725.tif 000026
【図１５Ｃ】
2016537725.tif 000027
【図１５Ｄ】
2016537725.tif 000028
【図１６】
2016537725.tif 000029
【図１７Ａ】
2016537725.tif 000030
【図１７Ｂ】
2016537725.tif 000031
【図１８Ａ】
2016537725.tif 000032
【図１８Ｂ】
2016537725.tif 000033
【図１９】
2016537725.tif 000034
【図２０】
2016537725.tif 000035
【図２１】
2016537725.tif 000036
【図２２】
2016537725.tif 000037
【図２３】
2016537725.tif 000038
【図２４】
2016537725.tif 000039
【図２５】
2016537725.tif 000040
【図２６】
2016537725.tif 000041
【図２７】
2016537725.tif 000042
【図２８】
2016537725.tif 000043
【図２９】
2016537725.tif 000044
【図３０】
2016537725.tif 000045
【図３１】
2016537725.tif 000046
【図３２】
2016537725.tif 000047
【図３３】
2016537725.tif 000048
【図３４】
2016537725.tif 000049
【図３５】
2016537725.tif 000050
【図３６】
2016537725.tif 000051
【図３７】
2016537725.tif 000052
【図３８】
2016537725.tif 000053
【図３９】
2016537725.tif 000054
【図４０】
2016537725.tif 000055
【図４１】
2016537725.tif 000056
【国際調査報告】
2016537725.tif 000057
2016537725.tif 000058
2016537725.tif 000059