(57)【要約】  ベクトル処理でスウィズル命令の実行によるオーバーヘッドを減らすスウィズルパターン生成器が開示される。  スウィズルパターン生成器は、１つのベクトルレジスタ及びベクトル処理部のうち少なくとも１つのデータセットに関するスウィズルパターンを提供する。スウィズルパターン生成器は、互いに異なるベクトル演算に対して多様なスウィズルパターンを生成するように再構成可能である。
2014530408.tif 000002
【特許請求の範囲】
【請求項１】
ベクトル演算のデータエレメントを含むデータセットを保存するベクトルレジスタと、
前記ベクトル演算を行うベクトル演算器と、
前記ベクトルレジスタと前記ベクトル演算器とに連結され、前記データセットに関するスウィズルパターンを生成するスウィズルパターン生成器と、
を含むプロセッサ。
【請求項２】
前記スウィズルパターン生成器は、前記データセットの前記データエレメントを結合するか、順序を変更して、前記スウィズルパターンを生成する請求項１に記載のプロセッサ。
【請求項３】
前記ベクトル演算の他のデータエレメントを含む他のデータセットを保存する他のベクトルレジスタをさらに含み、
前記スウィズルパターン生成器は、前記他のベクトルレジスタにも連結され、前記データセットの前記データエレメントと前記他のデータセットの前記他のデータエレメントとを結合して、前記スウィズルパターン及び他のスウィズルパターンのうち一方又は両方を生成する請求項１に記載のプロセッサ。
【請求項４】
前記スウィズルパターンが、前記ベクトル演算に関するデータセットとして前記ベクトルプロセッサに入力される請求項３に記載のプロセッサ。
【請求項５】
前記スウィズルパターン生成器は、前記スウィズルパターンを生成するスウィズリングネットワークを含む請求項１に記載のプロセッサ。
【請求項６】
前記スウィズリングネットワークは、前記スウィズルパターンを生成する複数のデータラインを含み、
前記データラインのそれぞれは、一端が前記ベクトルレジスタの出力に連結され、他端が前記ベクトル演算器に連結される請求項５に記載のプロセッサ。
【請求項７】
前記スウィズリングネットワークは、複数のデータラインを含み、
前記データラインのそれぞれは、一端が前記ベクトル演算器の出力に連結される請求項５に記載のプロセッサ。
【請求項８】
前記スウィズルパターン生成器は、前記スウィズルパターンを保存するスウィズルドレジスタを含む請求項５に記載のプロセッサ。
【請求項９】
前記スウィズリングネットワークは、前記スウィズルパターンを生成する複数のデータラインを含み、
前記データラインのそれぞれは、一端が前記ベクトル演算器の出力に連結され、他端が前記スウィズルドレジスタの入力に連結される請求項８に記載のプロセッサ。
【請求項１０】
前記スウィズリングネットワークは、前記スウィズルパターンを生成する複数のデータラインを含み、
前記データラインのそれぞれは、一端が前記ベクトルレジスタの出力に連結され、他端が前記スウィズルドレジスタの入力に連結される請求項８に記載のプロセッサ。
【請求項１１】
前記スウィズルパターン生成器は、前記スウィズルパターンを保存するスウィズルドレジスタを含む請求項１に記載のプロセッサ。
【請求項１２】
前記スウィズリングネットワークは、多様なスウィズルパターンを生成するように再構成可能な複数のデータラインを含む請求項５に記載のプロセッサ。
【請求項１３】
前記スウィズリングネットワークは、
前記複数のデータラインのそれぞれに対して再構成可能な連結を含み、前記再構成可能な連結に基づいて、前記多様なスウィズルパターンを生成するスイッチと、
前記スイッチに連結され、前記多様なスウィズルパターンに対応する前記複数のデータラインに対する前記再構成可能な連結に関する多様なスイッチ連結を保存するスイッチングテーブルと、
を含む請求項１２に記載のプロセッサ。
【請求項１４】
前記スウィズルパターン生成器は、前記ベクトルレジスタからの前記データセットの出力又は入力と実質的に同時に前記スウィズルパターンを生成する請求項１に記載のプロセッサ。
【請求項１５】
ベクトル演算に関するデータセットを保存するベクトルレジスタと、
前記ベクトル演算を実行するベクトル実行部と、
前記ベクトルレジスタの出力と前記ベクトル実行部の入力とに連結され、前記データセットのデータエレメントを結合するか、順序を変更して、前記ベクトル演算のための入力としてスウィズルパターンを生成するスウィズルパターン生成部と、
を含むプロセッシング装置。
【請求項１６】
前記ベクトル演算に関する他のデータセットを保存する他のベクトルレジスタをさらに含み、
前記スウィズルパターン生成部は、前記他のベクトルレジスタの出力にさらに連結され、前記データセット及び前記他のデータセットのデータエレメントを結合するか、順序を変更して、前記ベクトル演算のための入力として、前記スウィズルパターン及び第２スウィズルパターンを生成するスウィズルパターン生成部を含む請求項１５に記載のプロセッシング装置。
【請求項１７】
ベクトル演算を実行するベクトル実行部と、
前記ベクトル実行部から受信したベクトル演算結果に対応するデータセットを保存するベクトルレジスタと、
前記ベクトル実行部の出力に連結され、前記データセットのデータエレメントを結合するか、順序を変更して、前記ベクトルレジスタ内の前記データセットを保存すると同時に、スウィズルパターンを生成するスウィズリングネットワークと、
前記スウィズリングネットワークに連結され、前記スウィズルパターンを保存するスウィズルドレジスタと、
を含むプロセッシング装置。
【請求項１８】
前記ベクトル実行部から受信した前記ベクトル演算結果に対応する他のデータセットを保存する他のベクトルレジスタと、
他のスウィズルパターンを保存する他のスウィズルドレジスタと、をさらに含み、
前記スウィズルパターン生成部は、前記データセット及び前記他のデータセットのデータエレメントを結合するか、順序を変更して、前記スウィズルパターン及び前記第２スウィズルパターンを生成する請求項１７に記載のプロセッシング装置。
【請求項１９】
第１データエンドと、
ベクトルレジスタ及びベクトル実行部のうち少なくとも１つの出力に連結された第２データエンドと、
前記第１データエンドと前記第２データエンドとに連結される複数のデータコネクションを含み、前記複数のデータコネクションに基づいて、前記ベクトルレジスタ及び前記ベクトル実行部のうち少なくとも１つから出力されるデータセットに関して、スウィズルパターンを前記第１データエンドで生成するスウィズリングネットワークと、
を含むスウィズルパターン生成装置。
【請求項２０】
前記スウィズリングネットワークの前記複数のデータコネクションは、再構成可能であり、多様なデータコネクションの配列を生成し、前記多様なデータコネクションの配列に基づいて多様なスウィズルパターンを生成する請求項１９に記載のスウィズルパターン生成装置。
【請求項２１】
前記スウィズリングネットワークは、
前記第１データエンドから前記第２データエンドへの前記複数のデータコネクションを生成し、前記データコネクションの配列に基づいて多様なスウィズルパターンを生成する再構成可能なスイッチと、
前記スイッチに連結され、前記多様なスウィズルパターンに対応する前記第１データエンドから前記第２データエンドへの前記再構成可能なスイッチに関する多様なデータコネクションの配列を保存するスイッチングテーブルと、
を含む請求項１９に記載のスウィズルパターン生成装置。
【請求項２２】
前記第１データエンドに連結され、前記多様なスウィズルパターンに対応する順序でデータエレメントを保存する少なくとも１つのスウィズルドレジスタをさらに含む請求項１９又は２０に記載のスウィズルパターン生成装置。
【請求項２３】
前記第１データエンドで前記スウィズリングネットワークから出力されるデータエレメントは、少なくとも１つのバーチャルスウィズルドレジスタ及び出力されたデータエレメントの配列に対応するスウィズルパターンを提供する請求項１９又は２０に記載のスウィズルパターン生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル演算のためのプロセッシング装置及びスウィズル命令に関する。
【背景技術】
【０００２】
最近、マルチメディア、通信、グラフィックのような多くの応用のデータ処理要求量が急増している。高性能サーバコンピュータだけではなく、一般ＰＣとさらにはモバイルデバイスでも、データ処理負荷の増加は機器の性能に相当な影響を与える。したがって、プロセッシング装置が短時間内に多くのデータを処理する必要があり、このために、多くの最新のプロセッサは、一回で処理するデータ幅を増やして、このような要求を満たしている。このような要求を満たすプロセッサをＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）プロセッサと言い、あるいはベクトルプロセッサとも言う。
【０００３】
ＳＩＭＤあるいはベクトルプロセッサは、１つの命令で多数のデータセットを同時に演算するために、データ処理に優れた性能を見せる。ベクトルあるいはＳＩＭＤ演算（以下、“ベクトル演算”）を行うためには、ベクトルデータまたはベクトルデータエレメントが所望の順に準備していなければならない。例えば、演算を処理するベクトルプロセッシングユニットに関するベクトルレジスタ内にベクトル演算のためのデータセットが定められた順序で準備される。データセットを生成するために、多数のスカラーデータを集めてベクトルレジスタに入れる。ベクトル演算とベクトル演算との間にデータセットが伝達される時、そのデータエレメントが適切な順序で再整列されなければならず、ベクトル演算の結果をスカラー形態で保存するとき、やはり適切な順序によってデータエレメントのそれぞれが保存されなければならない。一例によれば、スウィズルド命令を用いてベクトル演算に関するデータセットのデータエレメントを整列または再整列することができる。
【０００４】
スウィズルド命令は、ベクトル演算の入力として判読されたデータセットを整列する。スウィズルド命令は、またベクトル演算の多様な命令の間に配置されることもある。例えば、スウィズル命令（Ｓｗｉｚｚｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ）は、ロード（ｌｏａｄ）命令とベクトル演算命令との間に配されて、データセットを整列させることを行う。また、ベクトル演算命令とベクトル演算命令との間に位置して、最初のベクトル演算の結果を二番目のベクトル演算が使用できるように、データセットを再整列させる。また、ベクトル演算命令とストア（ｓｔｏｒｅ）命令との間に位置して、データセットを所望の順に整列して外部に伝達する。
【０００５】
しかし、前記のように、スウィズル命令が、ロード命令、ストア命令、及びベクトル演算命令の間に配されれば、命令を実行するプロセッサの性能が低下する。場合によっては、ベクトル演算のためのあらゆるロード命令、ストア命令、及びベクトル演算命令の間に１つ以上のスウィズルド命令が配置される。その結果、プロセッサの性能が大きく低下する。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、プロセッシング装置及びスウィズルパターン生成器を提供することである。
【課題を解決するための手段】
【０００７】
本発明の一態様によるプロセッシング装置は、ベクトル演算のデータエレメントを含むデータセットを保存するベクトルレジスタと、前記ベクトル演算を行うベクトル演算器と、前記ベクトルレジスタと前記ベクトル演算器とに連結され、前記データセットに関するスウィズルパターンを生成するスウィズルパターン生成器と、を含む。
【０００８】
本発明の他の態様によるプロセッシング装置は、ベクトル演算に関するデータセットを保存するベクトルレジスタと、前記ベクトル演算を実行するベクトル実行部と、前記ベクトルレジスタの出力と前記ベクトル実行部の入力とに連結され、前記データセットのデータエレメントを結合するか、順序を変更して、前記ベクトル演算のための入力としてスウィズルパターンを生成するスウィズルパターン生成部と、を含む。
【０００９】
本発明のさらに他の態様によるプロセッシング装置は、ベクトル演算を実行するベクトル実行部と、前記ベクトル実行部から受信したベクトル演算結果に対応するデータセットを保存するベクトルレジスタと、前記ベクトル実行部の出力に連結され、前記データセットのデータエレメントを結合するか、順序を変更して、前記ベクトルレジスタ内の前記データセットを保存すると同時に、スウィズルパターンを生成するスウィズリングネットワークと、前記スウィズリングネットワークに連結され、前記スウィズルパターンを保存するスウィズルドレジスタと、を含みうる。
【００１０】
本発明のさらに他の態様によるスウィズルパターン生成装置は、第１データエンドと、ベクトルレジスタ及びベクトル実行部のうち少なくとも１つの出力に連結された第２データエンドと、前記第１データエンドと前記第２データエンドとに連結される複数のデータコネクションを含み、前記複数のデータコネクションに基づいて、前記ベクトルレジスタ及び前記ベクトル実行部のうち少なくとも１つから出力されるデータセットに関して、スウィズルパターンを前記第１データエンドで生成するスウィズリングネットワークと、を含む。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態によるプロセッシング装置を示す図である。
【図２Ａ】本発明の一実施形態によるスウィズルパターンを示す図である。
【図２Ｂ】本発明の他の実施形態によるスウィズルパターンを示す図である。
【図３】本発明の一実施形態によるスウィズルパターン生成器を示す図である。
【図４】本発明の他の実施形態によるスウィズルパターン生成器を示す図である。
【図５】本発明のさらに他の実施形態によるスウィズルパターン生成器を示す図である。
【図６】本発明の一実施形態によるプロセッシング装置がＣＧＡ（ｃｏａｒｓｅ  ｇｒａｉｎｅｄ  ａｒｒａｙ）に適用された一例を示す図である。
【図７】本発明の一実施形態によるプロセッシング装置がＣＧＡに適用された他の例を示す図である。
【図８Ａ】順次的な２つのベクトル演算を処理する一般的なプロセッサの動作過程を示す図である。
【図８Ｂ】図８Ａの例による演算フローをＣＧＡに適用した結果を示す図である。
【図９Ａ】図８Ａの例による演算フローをスウィズルパターン生成器を利用するプロセッサに適用した結果を示す図である。
【図９Ｂ】図９Ａの例による演算フローがＣＧＡに適用された結果を示す図である。
【発明を実施するための形態】
【００１２】
＜発明の詳細＞
本発明の一態様によるプロセッシング装置は、ベクトル演算のデータエレメントを含むデータセットを保存するベクトルレジスタと、前記ベクトル演算を行うベクトル演算器と、前記ベクトルレジスタと前記ベクトル演算器とに連結され、前記データセットに関するスウィズルパターンを生成するスウィズルパターン生成器と、を含む。
【００１３】
前記スウィズルパターン生成器は、前記データセットの前記データエレメントを結合するか、順序を変更して、前記スウィズルパターンを生成することができる。
【００１４】
プロセッシング装置は、前記ベクトル演算の他のデータエレメントを含む他のデータセットを保存する他のベクトルレジスタをさらに含み、前記スウィズルパターン生成器は、前記他のベクトルレジスタにも連結され、前記データセットの前記データエレメントと前記他のデータセットの前記他のデータエレメントとを結合して、前記スウィズルパターンを生成することができる。
【００１５】
プロセッシング装置は、前記ベクトル演算の他のデータエレメントを含む他のデータセットを保存する他のベクトルレジスタをさらに含み、前記スウィズルパターン生成器は、前記他のベクトルレジスタにさらに連結され、前記データセットの前記データエレメントと前記他のデータセットの前記他のデータエレメントとを結合して、前記スウィズルパターン及び他のスウィズルパターンを生成することができる。
【００１６】
前記スウィズルパターンが、前記ベクトル演算に関するデータセットとして前記ベクトルプロセッサに入力されうる。
【００１７】
前記スウィズルパターン生成器は、前記スウィズルパターンを生成するスウィズリングネットワークを含みうる。
【００１８】
前記スウィズリングネットワークは、前記スウィズルパターンを生成する複数のデータラインを含み、前記データラインのそれぞれは、一端が前記ベクトルレジスタの出力に連結され、他端を前記ベクトル演算器に連結させうる。
【００１９】
前記スウィズリングネットワークは、複数のデータラインを含み、前記データラインのそれぞれは、一端が前記ベクトル演算器の出力に連結されうる。
【００２０】
前記スウィズルパターン生成器は、前記スウィズルパターンを保存するスウィズルドレジスタを含みうる。
【００２１】
前記スウィズリングネットワークは、前記スウィズルパターンを生成する複数のデータラインを含み、前記データラインのそれぞれは、一端が前記ベクトル演算器の出力に連結され、他端を前記スウィズルドレジスタの入力に連結させうる。
【００２２】
前記スウィズリングネットワークは、前記スウィズルパターンを生成する複数のデータラインを含み、前記データラインのそれぞれは、一端が前記ベクトルレジスタの出力に連結され、他端が前記スウィズルドレジスタの入力に連結されうる。
【００２３】
前記スウィズルパターン生成器は、前記スウィズルパターンを保存するスウィズルドレジスタを含みうる。
【００２４】
前記スウィズリングネットワークは、多様なスウィズルパターンを生成するように再構成可能な複数のデータラインを含みうる。
【００２５】
前記スウィズリングネットワークは、前記複数のデータラインのそれぞれに対して再構成可能な連結を含み、前記再構成可能な連結に基づいて、前記多様なスウィズルパターンを生成するスイッチと、前記スイッチに連結され、前記多様なスウィズルパターンに対応する前記複数のデータラインに対する前記再構成可能な連結に関する多様なスイッチ連結を保存するスイッチングテーブルと、を含みうる。
【００２６】
前記スウィズルパターン生成器は、前記ベクトルレジスタからの前記データセットの出力と実質的に同時に前記スウィズルパターンを生成することができる。
【００２７】
前記スウィズルパターン生成器は、前記ベクトルレジスタからの前記データセットの入力と実質的に同時に前記スウィズルパターンを生成することができる。
【００２８】
本発明の他の態様によるプロセッシング装置は、ベクトル演算に関するデータセットを保存するベクトルレジスタと、前記ベクトル演算を実行するベクトル実行部と、前記ベクトルレジスタの出力と前記ベクトル実行部の入力とに連結され、前記データセットのデータエレメントを結合するか、順序を変更して、前記ベクトル演算のための入力としてスウィズルパターンを生成するスウィズルパターン生成部と、を含む。
【００２９】
プロセッシング装置は、前記ベクトル演算に関する他のデータセットを保存する他のベクトルレジスタをさらに含み、前記スウィズルパターン生成部は、前記他のベクトルレジスタの出力にさらに連結され、前記データセット及び前記他のデータセットのデータエレメントを結合するか、順序を変更して、前記ベクトル演算のための入力として、前記スウィズルパターン及び第２スウィズルパターンを生成するスウィズルパターン生成部を含みうる。
【００３０】
本発明のさらに他の態様によるプロセッシング装置は、ベクトル演算を実行するベクトル実行部と、前記ベクトル実行部から受信したベクトル演算結果に対応するデータセットを保存するベクトルレジスタと、前記ベクトル実行部の出力に連結され、前記データセットのデータエレメントを結合するか、順序を変更して、前記ベクトルレジスタ内の前記データセットを保存すると同時に、スウィズルパターンを生成するスウィズリングネットワークと、前記スウィズリングネットワークに連結され、前記スウィズルパターンを保存するスウィズルドレジスタと、を含みうる。
【００３１】
プロセッシング装置は、前記ベクトル実行部から受信した前記ベクトル演算結果に対応する他のデータセットを保存する他のベクトルレジスタと、他のスウィズルパターンを保存する他のスウィズルドレジスタと、をさらに含み、前記スウィズルパターン生成部は、前記データセット及び前記他のデータセットのデータエレメントを結合するか、順序を変更して、前記スウィズルパターン及び前記第２スウィズルパターンを生成することができる。
【００３２】
本発明のさらに他の態様によるスウィズルパターン生成装置は、第１データエンドと、ベクトルレジスタ及びベクトル実行部のうち少なくとも１つの出力に連結された第２データエンドと、前記第１データエンドと前記第２データエンドとに連結される複数のデータコネクションを含み、前記複数のデータコネクションに基づいて、前記ベクトルレジスタ及び前記ベクトル実行部のうち少なくとも１つから出力されるデータセットに関して、スウィズルパターンを前記第１データエンドで生成するスウィズリングネットワークと、を含む。
【００３３】
前記スウィズリングネットワークの前記複数のデータコネクションは、再構成可能であり、多様なデータコネクションの配列を生成し、前記多様なデータコネクションの配列に基づいて多様なスウィズルパターンを生成することができる。
【００３４】
前記スウィズリングネットワークは、前記第１データエンドから前記第２データエンドへの前記複数のデータコネクションを生成し、前記データコネクションの配列に基づいて多様なスウィズルパターンを生成する再構成可能なスイッチと、前記スイッチに連結され、前記多様なスウィズルパターンに対応する前記第１データエンドから前記第２データエンドへの前記再構成可能なスイッチに関する多様なデータコネクションの配列を保存するスイッチングテーブルと、を含みうる。
【００３５】
スウィズルパターン生成装置は、前記第１データエンドに連結され、前記多様なスウィズルパターンに対応する順序でデータエレメントを保存する少なくとも１つのスウィズルドレジスタをさらに含みうる。
【００３６】
スウィズルパターン生成装置は、前記第１データエンドに連結され、前記多様なスウィズルパターンに対応する順序でデータエレメントを保存する少なくとも１つのスウィズルドレジスタをさらに含みうる。
【００３７】
この際、前記第１データエンドで前記スウィズリングネットワークから出力されるデータエレメントは、少なくとも１つのバーチャルスウィズルドレジスタ及び出力されたデータエレメントの配列に対応するスウィズルパターンを提供することができる。
【００３８】
この際、前記第１データエンドで前記スウィズリングネットワークから出力されるデータエレメントは、少なくとも１つのバーチャルスウィズルドレジスタ及び出力されたデータエレメントの配列に対応するスウィズルパターンを提供することができる。
【００３９】
以下、添付した図面を参照して、本発明の実施のための具体例を詳しく説明する。後述する実施形態は、本発明を例示的に説明するためのものであって、本発明の権利範囲が、特定の実施形態に限定されるものではない。
【００４０】
図１は、本発明の一実施形態によるプロセッシング装置１００を図示する。本実施形態によって、プロセッシング装置１００は、単一コアを有するプロセッサ、多数のコアを有するプロセッサ、構成変更が可能なＣＧＡマシンまたはＶＬＩＷマシンなどになりうる。
【００４１】
図１を参照すれば、本実施形態によるプロセッシング装置１００は、ベクトル演算器１０１、多数のベクトルレジスタ１０２ａ、１０２ｂ、１０２ｃ、及びスウィズルパターン（ｓｗｉｚｚｌｅ  ｐａｔｔｅｒｎ）生成部１０３を含む。
【００４２】
ベクトル演算器１０１は、ベクトル演算を行う。
【００４３】
それぞれのベクトルレジスタ１０２ａ、１０２ｂ、１０２ｃは、ベクトル演算（例：ベクトルデータ）と関連した多数のデータエレメントを含むデータセットを保存する。例えば、ベクトル演算と関連したデータセットは、データエレメントとして配列された多数のスカラーデータを含みうる。
【００４４】
スウィズルパターン生成部１０３は、ベクトルレジスタ１０２ｃのデータセットに対するスウィズルパターンを生成する。スウィズルパターンとは、少なくとも１つのベクトルレジスタ（例えば、１０２ｃ）に対するデータセットの各データエレメントを組み合わせるか、その整列順序を変更した結果である。または、第１ベクトルレジスタ（例えば、１０２ｂ）に対するデータセットの各データエレメントと第２ベクトルレジスタ（例えば、１０２ｃ）に対するデータセットの各データエレメントとを組み合わせた結果になり、例えば、図３及び図４で示したようである。スウィズルパターン生成部１０３が生成した１つまたはそれ以上のデータセットに関するスウィズルパターンは、１つまたはそれ以上のデータセット上でスウィズル命令を行った結果と同一であり得る。しかし、スウィズルパターン生成部１０３は、あるスウィズル命令の実行結果（すなわち、スウィズルパターン）と同じスウィズルパターンを、１つまたはそれ以上のデータセットに関するスウィズル命令の実行なしに提供することができる。その結果、スウィズル命令の実行と関連したオーバーヘッドが軽減または除去されて、全体的な性能が改善される。
【００４５】
本発明の一態様によって、スウィズルパターン生成部１０３は、スウィズルドバーチャルレジスタ１１０とスウィズリングネットワーク１２０とを含みうる。スウィズルドバーチャルレジスタ１１０は、図１で示した例のように、ベクトルレジスタ１０２ａ、１０２ｂ、１０２ｃと同じ特性の物理的なベクトルレジスタになることもある。または、実際の保存ユニットを活用していない仮想のベクトルレジスタになることもある。スウィズルドバーチャルレジスタ１１０は、１つまたはそれ以上のベクトルレジスタのスウィズルパターンを有する物理的なまたは仮想のベクトルレジスタになりうる。
【００４６】
スウィズリングネットワーク１２０は、多数のワイヤまたはデータラインを含む。それぞれのワイヤまたはデータラインは、少なくとも２つのエンドを有する。図１の例で、ワイヤまたはデータラインの一端は、ベクトルレジスタ１０２ｃの入力と連結され、他端は、スウィズルドバーチャルレジスタ１１０に連結される。スウィズリングネットワーク１２０によって多様なスウィズルパターンが生成され、該生成されたスウィズルパターンが、スウィズルドバーチャルレジスタ１１０に保存されうる。例えば、ベクトルレジスタ１０２ｃにデータエレメント（例えば、ｘ１、ｘ２、ｘ３、ｘ４）が、ｘ１、ｘ２、ｘ３、ｘ４の順次に入力される場合、その入力と同時にスウィズルパターンの１つであるｘ３、ｘ２、ｘ４、ｘ１の順序のデータセットが、スウィズリングネットワーク１２０によって生成され、該生成されたデータセットが、スウィズルドバーチャルレジスタ１１０に保存することができる。
【００４７】
図１では、スウィズリングネットワーク１２０の一端が、ベクトルレジスタ１０２ｃの入力に連結されることを図示した。しかし、これは、理解を助けるための１つの例に過ぎないものである。例えば、スウィズリングネットワーク１２０の一端は、ベクトルレジスタ１０２ｃの出力と連結されても良い。また、図１は、スウィズルパターンがベクトルレジスタ１０２ｃに保存された単一データセットに関して生成された場合を示す。
【００４８】
多数のベクトルレジスタ（例えば、１０２ｂ、１０２ｃ）の各データエレメントが、組合わせられた結果に対応するスウィズルパターンがスウィズルドバーチャルレジスタ１１０に保存されうる。
【００４９】
図２Ａ及び図２Ｂは、本発明の一実施形態によるスウィズルパターンを図示する。これは、スウィズルパターンが何れか１つのベクトルレジスタのデータセットに基づいて生成される場合に関する一例になりうる。
【００５０】
図２Ａを参照すれば、それぞれのベクトルレジスタ（例えば、ｖｒ０、ｖｒ１、ｖｒ２、ｖｒ３）は、ベクトルデータセット（例えば、｛ａ３、ａ２、ａ１、ａ０｝、｛ｂ３、ｂ２、ｂ１、ｂ０｝、｛ｃ３、ｃ２、ｃ１、ｃ０｝、｛ｄ３、ｄ２、ｄ１、ｄ０｝）を保存する。本実施形態で、それぞれのベクトルデータセットは、４つのデータエレメントを含む。それぞれのスウィズルドレジスタ（例えば、ｓｖｒ０、ｓｖｒ１、ｓｖｒ２、ｓｖｒ３、ｓｖｒ４、ｓｖｒ５、ｓｖｒ６、ｓｖｒ７）は、何れか１つのベクトルレジスタのデータセットに関するスウィズルパターンを保存する。言い換えれば、何れか１つのスウィズルドバーチャルレジスタは、他の１つのベクトルレジスタのデータエレメントを組み合わせた結果、または、そのデータエレメントの整列順序を変更した結果を保存することができる。
【００５１】
例えば、スウィズルドレジスタｓｖｒ０は、スウィズルパターン（“ａ３、ａ３、ａ２、ａ２”）をベクトルレジスタｖｒ０のデータセット（｛ａ３、ａ２、ａ１、ａ０｝）に関して保存することができる。この例で、スウィズルドレジスタｓｖｒ０によって保存されたスウィズルパターン（“ａ３、ａ３、ａ２、ａ２”）は、ベクトルレジスタｖｒ０によって保存されたベクトルデータセット（｛ａ３、ａ２、ａ１、ａ０｝）のデータエレメント（ａ３）とデータエレメント（ａ２）とを結合することで得られる。
【００５２】
図２Ｂは、本発明の他の実施形態によるスウィズルパターンを図示する。これは、スウィズルパターンが、多数のベクトルレジスタのデータセットに基づいて生成される場合に関する一例になりうる。
【００５３】
図２Ｂを参照すれば、それぞれのベクトルレジスタ（例えば、ｖｒ０、ｖｒ１、ｖｒ２、ｖｒ３）は、ベクトルデータセット（例えば、｛ａ３、ａ２、ａ１、ａ０｝、｛ｂ３、ｂ２、ｂ１、ｂ０｝、｛ｃ３、ｃ２、ｃ１、ｃ０｝、｛ｄ３、ｄ２、ｄ１、ｄ０｝）を含む。何れか１つのベクトルデータセットは、４つのデータエレメントを保存する。それぞれのスウィズルドレジスタ（例えば、ｓｖｒ０、ｓｖｒ１、ｓｖｒ２、ｓｖｒ３、ｓｖｒ４、ｓｖｒ５、ｓｖｒ６、ｓｖｒ７）は、多数のベクトルレジスタのデータセットに関するスウィズルパターンを保存する。言い換えれば、何れか１つのスウィズルドバーチャルレジスタは、複数個のベクトルレジスタのデータエレメントを組み合わせた結果、または、そのデータエレメントの整列順序を変更した結果を保存することができる。
【００５４】
例えば、スウィズルドレジスタｓｖｒ０は、スウィズルドパターン（例えば、ａ３、ａ３、ｂ１、ｂ１）をベクトルレジスタｖｒ０によって保存されたデータセット（｛ａ３、ａ２、ａ１、ａ０｝）及びベクトルレジスタｖｒ１によって保存されたデータセット（｛ｂ３、ｂ２、ｂ１、ｂ０｝）に関して保存する。本実施形態で、スウィズルドレジスタによって保存されたスウィズルパターン（“ａ３、ａ３、ｂ１、ｂ１”）は、ベクトルレジスタｖｒ０のデータエレメント（ａ３）とベクトルレジスタｖｒ０のデータエレメント（ｂ１）とを結合することで得られる。
【００５５】
もちろん、スウィズルパターンは、図２Ａ及び図２Ｂで例示したものの以外にも、多様な形態で提供されることがある。例えば、実行されるアプリケーションの種類によって所定のスウィズルパターンを定義して、一定個数のスウィズルパターンのみを使うことも可能である。
【００５６】
図３は、本発明の一実施形態によるスウィズルパターン生成部を図示する。これは、物理的な保存装置を活用したスウィズルパターン生成部に関する一例になりうる。
【００５７】
図３を参照すれば、スウィズルパターン生成部３００は、スウィズリングネットワーク３０１及びスウィズルパターン保存装置３０２、例えば、スウィズルドバーチャルレジスタ３０２ａ、３０２ｂを含む。
【００５８】
スウィズリングネットワーク３０１は、多数のデータラインまたはワイヤで構成されても良い。それぞれのデータラインまたはワイヤは、少なくとも２つのエンドを有する。それぞれのデータラインまたはワイヤのエンドは、所定のスウィズルパターンが生成されるように、ベクトルレジスタの入力と連結され、他側のエンドは、スウィズルドバーチャルレジスタ３０２ａ、３０２ｂと連結される。
【００５９】
スウィズルドバーチャルレジスタ３０２ａ、３０２ｂは、ベクトルレジスタと物理的に同じ類型のベクトルレジスタが使われる。例えば、図３のスウィズルドバーチャルレジスタ３０２ａ、３０２ｂは、フリップフロップ、ラッチまたはメモリのようなハードウェアを用いて構成されても良い。
【００６０】
図３で、スウィズルドバーチャルレジスタｓｖｒ０の最初の領域は、スウィズリングネットワーク３０１を通じてベクトルレジスタｖｒ０の最初の領域と連結される。また、スウィズルドバーチャルレジスタｓｖｒ０の二番目の領域も、スウィズリングネットワーク３０１を通じてベクトルレジスタｖｒ０の最初の領域と連結される。類似した形態で、スウィズルドバーチャルレジスタｓｖｒ０の三番目及び四番目の領域は、ベクトルレジスタｖｒ０の二番目の領域と連結される。したがって、ベクトルレジスタｖｒ０にａ３、ａ２、ａ１、ａ０の順序のデータセットが保存されると同時に、そのスウィズルパターンのうち１つであるａ３、ａ３、ａ２、ａ２の順序のデータセットがスウィズルドバーチャルレジスタｓｖｒ０に保存することができる。
【００６１】
さらに、スウィズルドバーチャルレジスタｓｖｒ１は、ベクトルレジスタｖｒ０のデータエレメントとベクトルレジスタｖｒ１のデータエレメントとの組合わせ結果に対応するスウィズルパターンが保存されることが分かる。例えば、スウィズルドレジスタｓｖｒ１の第１領域は、ベクトルレジスタｖｒ０の第１領域にスウィズリングネットワーク３０１を経由して連結される。スウィズルドレジスタｓｖｒ１の第２領域は、ベクトルレジスタｖｒ０の第２領域にスウィズリングネットワーク３０１を経由して連結される。同様に、スウィズルドレジスタｓｖｒ１の第３、４領域は、ベクトルレジスタｖｒ０の第３、４領域にスウィズリングネットワーク３０１を経由して、それぞれ連結される。したがって、ベクトルレジスタｖｒ０、ｖｒ１が、ａ３、ａ２、ａ１、ａ０、及びｂ３、ｂ２、ｂ１、ｂ０の順序を有するデータセットを保存することができる時には、実質的に同時にデータセットがスウィズルドレジスタｓｖｒ１に、例えば、ａ０、ａ１、ｂ０、ｂ１の順序で保存されることによって、スウィズルパターン（“ａ０、ａ１、ｂ０、ｂ１”）が、ベクトルレジスタｖｒ０、ｖｒ１に保存されたデータセット（｛ａ３、ａ２、ａ１、ａ０｝及び｛ｂ３、ｂ２、ｂ１、ｂ０｝）の結合に関して生成される。
【００６２】
したがって、あるベクトル演算器が、スウィズル命令の実行結果を希望する場合、スウィズル命令を実行する代わりに、スウィズルドバーチャルレジスタ３０２ａ、３０２ｂに保存されているスウィズルパターンをそのまま利用することによって、スウィズル命令の実行によるオーバーヘッドを減らすことができる。
【００６３】
図４は、本発明の他の実施形態によるスウィズルパターン生成部を図示する。これは、保存装置を活用していないスウィズルパターン生成部に関する一例になりうる。
【００６４】
図４を参照すれば、スウィズルパターン生成部４００は、スウィズリングネットワーク４０１及びスウィズルドバーチャルレジスタ４０２ａ、４０２ｂを含む。
【００６５】
スウィズリングネットワーク４０１は、多数のデータラインまたはワイヤで構成されても良い。それぞれのデータラインまたはワイヤは、所定のスウィズルパターンが生成されるように、その一端がベクトルレジスタの出力と連結され、他の一端がスウィズルドバーチャルレジスタ４０２ａ、４０２ｂと連結される。
【００６６】
図３と異なって、図４のスウィズルドバーチャルレジスタ４０２ａ、４０２ｂは、如何なる保存装置または保存空間ではない仮想のレジスタになりうる。すなわち、スウィズルドバーチャルレジスタ４０２ａ、４０２ｂは、ベクトルレジスタの出力ワイヤの組合わせで構成されても良い。
【００６７】
図４で、スウィズルドバーチャルレジスタｓｖｒ０の最初の領域は、スウィズリングネットワーク３０１を通じてベクトルレジスタｖｒ０の最初の領域と連結される。また、スウィズルドバーチャルレジスタｓｖｒ０の二番目の領域も、スウィズリングネットワーク３０１を通じてベクトルレジスタｖｒ０の最初の領域と連結される。類似した形態で、スウィズルドバーチャルレジスタｓｖｒ０の三番目及び四番目の領域は、ベクトルレジスタｖｒ０の二番目の領域と連結される。したがって、ベクトルレジスタｖｒ０にａ３、ａ２、ａ１、ａ０の順序のデータセットが保存されると同時に、そのスウィズルパターンのうち１つであるａ３、ａ３、ａ２、ａ２の順序のデータセットがスウィズルドバーチャルレジスタｓｖｒ０に保存することができる。
【００６８】
さらに、スウィズルドバーチャルレジスタｓｖｒ１は、ベクトルレジスタｖｒ０からのデータエレメントと、ベクトルレジスタｖｒ１からのデータエレメントとを組み合わせることで得られる結果に対応するスウィズルパターンを“保存”することができる。例えば、スウィズルドバーチャルレジスタｓｖｒ１の第１領域は、スウィズリングネットワーク４０１を経由して、ベクトルレジスタｖｒ０の第１領域に“連結”される。スウィズルドバーチャルレジスタｓｖｒ１の第２領域は、スウィズリングネットワーク４０１を経由して、ベクトルレジスタｖｒ０の第２領域に“連結”される。同様に、スウィズルドバーチャルレジスタｓｖｒ１の第３、４領域は、スウィズリングネットワーク４０１を経由して、ベクトルレジスタｖｒ０の第３、４領域に“連結”される。したがって、ベクトルレジスタｖｒ０、ｖｒ１が、ａ３、ａ２、ａ１、ａ０、及びｂ３、ｂ２、ｂ１、ｂ０の順序を有するデータセットを保存することができるとき、実質的に同時にデータセットは、スウィズルドバーチャルレジスタｓｖｒ１内に、例えば、ａ０、ａ１、ｂ０、ｂ１の順序で“保存”されることによって、スウィズルパターン（“ａ０、ａ１、ｂ０、ｂ１”）をベクトルレジスタｖｒ０、ｖｒ１に保存されたデータセット（｛ａ３、ａ２、ａ１、ａ０｝及び｛ｂ３、ｂ２、ｂ１、ｂ０｝）に関して生成する。
【００６９】
したがって、あるベクトル演算器が、スウィズル命令の実行結果を希望する場合、スウィズル命令を実行する必要なしに、スウィズルドバーチャルレジスタ４０２ａ、４０２ｂに対応するベクトルレジスタの出力を選択することができる。その結果、スウィズル命令の実行によるオーバーヘッドを減らすか、除去することができる。
【００７０】
前述した実施形態によるスウィズルパターンを用いて、アプリケーションで頻繁に使われるスウィズルパターンは、予め定義されたスウィズルパターンのためのハードウェアによって供給されるロジックによって生成されうる。しかし、プロセッサが、多数の互いに異なるアプリケーションを実行し、頻繁に使われるスウィズルパターンが、アプリケーションごとに異なる場合には、スウィズルパターンは、それぞれのアプリケーションに関してアプリケーションの実行前に定義されうる。したがって、再構成可能なハードウェアが使われて、それぞれのアプリケーションのためのロジックを提供することができる。図５は、それに関する一例である。
【００７１】
図５は、本発明のさらに他の実施形態によるスウィズルパターン生成部を図示する。図５で示すスウィズルパターン生成部は、再構成可能なスウィズリングネットワークを含み、再構成可能なスウィズリングネットワークは、例えば、再構成可能なスイッチングデバイスを含む。再構成可能なスイッチングデバイスは、スイッチングデバイスのデータ連結の入力と出力とを命令、またはコントローラ、メモリ、その他の保存装置から受信された入力によって再構成する。
【００７２】
例えば、図５で、スウィズルパターン生成部５００は、再構成可能なスウィズリングネットワークを含む。再構成可能なスウィズリングネットワークは、再構成可能なスイッチングデバイス５０１及びスイッチングデバイスに関するコントローラ／保存デバイス５０２を含む。スイッチングデバイス５０１は、多数の入線５０３及び出線５０４を含む。スイッチングデバイス５０１は、多様な入線５０３と出線５０４との間の連結を制御する装置である。スイッチングデバイス５０１は、スイッチングデバイスの連結に基づいて、それぞれのアプリケーションに関する任意のスウィズルパターンや特定のスウィズルパターンを生成するのに使われる。
【００７３】
コントローラ／保存デバイス５０２は、スイッチングデバイス５０１が入線５０３と出線５０４との間の連結を構成するための構成情報を保存する。
【００７４】
入線数をｍ、出線数をｎであるとすると、スイッチングデバイス５０１は、任意の入線と出線との接続、すなわち、（ｍ×ｎ）種類の接続を（ｍ＋ｎ−１）個の制御素子で制御する。例えば、スイッチングデバイス５０１は、クロスバースイッチ５０１を用いて具現され、コントローラ／保存デバイス５０２は、スイッチングテーブルを用いて具現されうる。スイッチングテーブル５０２の内容を変えれば、クロスバースイッチ５０１の連結状態（すなわち、入線と出線との間の連結）が変更され、これにより、生成されるスウィズルパターンも変更されうる。
【００７５】
したがって、アプリケーション別によく使われるスウィズルパターンをあらかじめスイッチングテーブルに入れて置き、アプリケーション実行では、そのアプリケーションに対応するスウィズルパターンを使うことができる。
【００７６】
頻繁に使われるスウィズルパターン（ここでは、“スウィズルパターンセット”と言及する）は、アプリケーションによって互いに異なり、図５の再構成可能なスウィズリングネットワークは、互いに異なるアプリケーションに関するスウィズルパターンセットに対応するスウィズルドレジスタを活性化するのに使われる。同じスウィズルパターンセットを使うアプリケーションは、同じスウィズルパターンを共有することができる。また、もし、スウィズルパターンが、アプリケーションのある部分で頻繁に使われるが、そのアプリケーションのその他の部分で頻繁に使われるスウィズルパターンとは異なる場合、アプリケーションは、２つまたはそれ以上のスウィズルパターンセットを使うことができる。すなわち、アプリケーションを実行する過程で、再構成可能なスウィズリングネットワークが再構成されて、新たなスウィズルパターンセットを生成することができる。したがって、多数のアプリケーションが、１つのスウィズルパターンセットを共有し（スイッチングテーブルを共有し）、１つのアプリケーションが、経時的に互いに異なるスウィズルパターンセットを（または、スイッチングテーブルを）使うこともできる。
【００７７】
図６は、本発明の一実施形態によるプロセッサがＣＧＡ（ｃｏａｒｓｅ  ｇｒａｉｎｅｄ  ａｒｒａｙ）に適用されたアレイブロックの一例を図示する。
【００７８】
本実施形態で、アレイブロック６００は、多数の他のアレイブロック（例えば、ａ、ｂ、ｃ、ｄ）からの入力と、スウィズリングネットワーク６０４とスウィズルドレジスタファイル６０６（例えば、８つのスウィズルパターンやレジスタを含む）とを含むスウィズルパターン生成部６０２と、ベクトル実行部（ＶＰＵ：ｖｅｃｔｏｒ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）６０９、及び出力ベクトルレジスタ６１０と、を含む。本実施形態で、スウィズルパターン生成部６０２は、ＣＧＡアレイブロック６００の入力に連結される。
【００７９】
図６を参照すれば、多様なアレイブロック（例えば、アレイａ、ｂ、ｃ、ｄ）からの入力をデータエレメント単位で組み合わせて、多様なスウィズルドバーチャルレジスタを構成することが分かる。ベクトル実行部は、ベクトル演算と関連したオペランドとして多様なアレイブロックから来る入力及び／またはスウィズルドバーチャルレジスタを選択することができる。図６で、ＶＰＵ６０９は、複数の入力を受信して出力を生成する。１つの入力は、複数のベクトルレジスタ及び複数のスウィズルドレジスタのうちから１つを選択する。
【００８０】
図６で示すように、ベクトルレジスタの出力は、ＶＰＵ６０９の入力側のＭＵＸ６０７、６０８に入力され、実質的に同時にスウィズリングネットワーク６０４に入力されて、スウィズルドレジスタを形成する。スウィズルドレジスタからの出力は、ＶＰＵ６０９の入力側からＭＵＸ６０７、６０８に入力される。
【００８１】
ベクトルレジスタとスウィズルドレジスタとのうちの１つが、ＶＰＵ６０９への入力として選択される。図６の実施形態で、スウィズルドレジスタファイル６０６は、８つのスウィズルレジスタを有する。８つのレジスタからの出力は、ＶＰＵ６０９の第１入力（左側部分）になる。図６の実施形態で、あらゆるベクトルレジスタとあらゆるスウィズルドレジスタとがＶＰＵ６０９の第１入力になりうる。図面を単純化するために、残りのレジスタからの出力は、点で表現した。
【００８２】
図７は、本発明の一実施形態によるプロセッサがＣＧＡに適用されたアレイブロックの他の例を図示する。アレイブロック７００は、入力、ベクトル実行部７０２、出力ベクトルレジスタ７０４、及びスウィズルパターン生成部７０６を含み、スウィズルパターン生成部７０６は、スウィズリングネットワーク７０８及びスウィズルドレジスタファイル７１０（例えば、４つのスウィズルレジスタを含む）を含む。本実施形態で、スウィズルパターン生成部は、ベクトルレジスタとＣＧＡアレイブロックの出力との間に配される。
【００８３】
図７を参照すれば、ベクトル実行部７０２の出力をデータエレメント単位で組み合わせて、多様なスウィズルドバーチャルレジスタを構成することが分かる。また、ベクトル実行部の出力を保存するベクトルレジスタが複数個ある場合、これらベクトルレジスタのデータエレメントを組み合わせて、スウィズルドバーチャルレジスタを構成することもできる。各スウィズルドバーチャルレジスタは、当該アレイブロックの入力として使い、出力に送って、他のアレイブロックで入力として使うこともできる。
【００８４】
次いで、本実施形態によるプロセッサと一般的なプロセッサとの動作を比較して説明すれば、次の通りである。
【００８５】
図８Ａは、順次的な２つのベクトル演算を処理する汎用プロセッサの動作過程を図示する。図８Ａを参照すれば、汎用プロセッサは、２つのベクトル演算を処理するために、６つのサイクルを必要とする。Ｃｙｃｌｅ０で、ロード命令が実行されて、データセット（例えば、｛ｘ１、ｘ２、ｘ３、ｘ４｝）をメモリからベクトルレジスタに入力する。Ｃｙｃｌｅ１で、スウィズル命令がベクトル実行部によって実行されて、データセットに関するスウィズルパターン（例えば、｛ｘ１、ｘ２、ｘ３、ｘ４｝）が決定され、その結果が、ベクトルレジスタに保存される。Ｃｙｃｌｅ２で、ベクトル演算命令がベクトル実行部によって実行され、その結果（例えば、ｙ１、ｙ２、ｙ３、ｙ４）が、ベクトルレジスタに保存される。Ｃｙｃｌｅ３で、スウィズル命令がベクトル実行部によって実行されて、ベクトルレジスタ内に保存されたスウィズルパターン（例えば、ｙ４、ｙ３、ｙ２、ｙ１）が決定される。Ｃｙｃｌｅ４で、ベクトル演算命令がベクトル実行部によって実行され、その結果（例えば、ｚ１、ｚ２、ｚ３、ｚ４）が、ベクトルレジスタに保存される。Ｃｙｃｌｅ５で、スウィズル命令にベクトル実行部によって実行されて、データセットに関するスウィズルパターン（例えば、ｚ３、ｚ４、ｚ１、ｚ２）が決定され、その結果が、ベクトルレジスタに保存される。Ｃｙｃｌｅ６で、ベクトルレジスタを判読する“保存命令”が実行され、その結果であるデータセットがメモリに保存される。スウィズル命令は、サイクル１、３、５に実行される。汎用プロセッサは、３つのスウィズル命令を２つのベクトル演算に対して行うので、汎用プロセッサは、ベクトル演算を連続して行うことができない。その結果、汎用プロセッサの演算効率は、ベクトル演算命令の個数が増加するほど低下する。
【００８６】
図８Ｂは、図８Ａの例をＣＧＡでの演算に適用した結果を示す。図８Ｂには、ＣＧＡの１２つのアレイブロックが図示される。
【００８７】
アレイブロック０は、メモリからデータセット（例えば、ｘ１、ｘ２、ｘ３、ｘ４）に関する命令をベクトルレジスタに入力する。アレイブロック１は、ベクトル実行部によってスウィズル命令を実行して、データセットに対するスウィズルパターン（例えば、ｘ１、ｘ２、ｘ３、ｘ４）を決定し、その結果をベクトルレジスタに保存する。アレイブロック２は、ベクトル実行部によってベクトル演算命令を実行し、その結果（例えば、ｙ１、ｙ２、ｙ３、ｙ４）をベクトルレジスタに保存する。アレイブロック３は、ベクトルレジスタ内に保存されたスウィズル命令をベクトル実行部によって実行する。アレイブロック４は、ベクトル実行部によってベクトル演算命令を実行し、その結果（例えば、ｚ１、ｚ２、ｚ３、ｚ４）をベクトルレジスタに保存する。アレイブロック５は、ベクトル実行部によってスウィズル命令を実行することによって、データセットに関するスウィズルパターン（例えば、ｚ３、ｚ４、ｚ１、ｚ２）を決定し、その結果をベクトルレジスタに保存する。アレイブロック（Ａｒｒａｙ  Ｂｌｏｃｋ６）は、ベクトルレジスタを判読し、データセットをメモリに保存する命令を実行する。アレイブロック９−１３は、アレイブロック１−５のベクトル実行部に入力されるスカラーレジスタをそれぞれ保存する。図８Ｂで示すように、ＣＧＡで具現されるプロセッサは、与えられた２つのベクトル演算のために、５つのベクトル演算部を使う。すなわち、３つのベクトル演算部は、スウィズル命令を実行するためにベクトル演算を行っていない。
【００８８】
図９Ａは、図８Ａの例を本発明の一実施形態によるプロセッサに適用してスウィズルドレジスタを含むスウィズルパターン生成器を具現した結果を示す。
【００８９】
図９Ａを参照すれば、プロセッサは、２つのベクトル演算を処理するために、４つのサイクルを必要とする。サイクル０で、命令が実行されて、メモリからデータセット（例えば、ｘ１、ｘ２、ｘ３、ｘ４）がベクトルレジスタに入力され、データセットに関するスウィズルパターン（例えば、ｘ１、ｘ２、ｘ３、ｘ４）がスウィズルパターン生成器によって生成され、スウィズルパターンがスウィズルドレジスタに保存される。サイクル１で、ベクトル演算命令がベクトル実行部によって実行され、その結果（例えば、ｙ１、ｙ２、ｙ３、ｙ４）が、ベクトルレジスタに保存され、スウィズルパターン（例えば、ｙ４、ｙ３、ｙ２、ｙ１）が、スウィズルパターン生成部によって生成され、その結果が、スウィズルドレジスタに保存され、サイクル２の入力に提供される。サイクル２で、ベクトル演算命令がベクトル実行部によって出力スウィズルパターンに対して実行され、その結果（例えば、ｚ１、ｚ２、ｚ３、ｚ４）が、ベクトルレジスタに保存され、スウィズルパターン（例えば、ｚ３、ｚ４、ｚ１、ｚ２）が、スウィズルパターン生成部によって生成され、スウィズルパターンが、スウィズルドレジスタに保存される。サイクル３で、命令がスウィズルドレジスタを判読し、スウィズルパターンに対応するデータセットをメモリに保存する。
【００９０】
図９Ａで、３つのスウィズル命令の実行結果に対応するスウィズルパターンが既定のスウィズルドバーチャルレジスタに保存されているために、スウィズル命令を実行せず、単純にスウィズルドバーチャルレジスタのデータセットを読み取ることが可能である。
【００９１】
図８Ａと図９Ａとを比較すれば、図８Ａで、サイクル２のベクトル演算が実行された以後、次のベクトル演算のために、サイクル３でスウィズル命令が実行される。一方、図９Ａでは、サイクル１のベクトル演算が実行されて、その実行結果が、ベクトルレジスタに保存されると同時に、所定のスウィズルパターンが、スウィズルドバーチャルレジスタに共に保存される。したがって、次のベクトル演算がサイクル２で即時実行される。したがって、実行サイクルが、６サイクルから４サイクルに軽減される。
【００９２】
また、図９Ｂは、本発明の一実施形態によるプロセッサがＣＧＡにも適用可能であることを示す。すなわち、図８Ｂと比較して、不要にスウィズル命令を行うベクトル演算部がないために、全体ベクトル演算に参与するアレイブロックの個数を減らすことが可能である。
【００９３】
図９Ｂを参照すれば、ＣＧＡは、６つのアレイブロックを含み、２つのベクトル演算を処理する。アレイブロック０は、命令を実行して、メモリからデータセット（例えば、ｘ１、ｘ２、ｘ３、ｘ４）をベクトルレジスタに入力し、スウィズルパターン生成部は、スウィズルドレジスタに保存されたデータセットに関するスウィズルパターン（例えば、ｘ１、ｘ２、ｘ３、ｘ４）を生成する。アレイブロック１は、アレイブロック０から判読されたスウィズルパターンを用いてベクトル実行部によってベクトル演算命令を実行する。その結果（例えば、ｙ１、ｙ２、ｙ３、ｙ４）は、ベクトルレジスタに保存され、スウィズルパターン生成部は、対応するスウィズルパターン（例えば、ｙ４、ｙ３、ｙ２、ｙ１）を生成して、スウィズルドレジスタに保存する。アレイブロック２は、アレイブロック１のスウィズルドレジスタから判読されたスウィズルパターンを用いてベクトル実行部によってベクトル演算インストラクションを実行する。その結果（例えば、ｚ１、ｚ２、ｚ３、ｚ４）は、ベクトルレジスタに保存され、スウィズルパターン生成部は、対応するスウィズルパターン（例えば、ｚ３、ｚ４、ｚ１、ｚ２）を生成して、スウィズルドレジスタに保存する。アレイブロック３は、命令を実行してアレイブロック２のスウィズルドレジスタを判読し、データセットをメモリに保存する。アレイブロック４、５は、アレイブロック１、２のベクトル演算に対するベクトル実行部への入力に関するスカラーレジスタをそれぞれ保存する。
【００９４】
図８Ｂと図９Ｂとを比較すれば、図９Ｂのアレイは、図８Ｂで示すスウィズル命令を実行するための追加的なベクトル実行部を要しない。したがって、ベクトル演算を行うために、必要なアレイブロックの個数が（例えば、１３つから５つに）軽減される。
【００９５】
したがって、詳細な説明によれば、スウィズル命令を実行せずとも、その実行結果と同じスウィズルパターンをベクトルレジスタのデータ入／出力と同時に提供することができる。したがって、スウィズル命令の実行による不要なオーバーヘッドを減らすことができる。
【００９６】
多様な実施形態が説明された。しかし、多様な変形が可能であることを理解しなければならない。例えば、システム、アーキテクチャー、デバイス、または回路内の構成要素が互いに異なる方式で結合されるか、等価の構成要素に置き換えられても、適切な結果が得られる。したがって、その他の形態で具現するとしても、下記特許請求の範囲に属するものである。
【産業上の利用可能性】
【００９７】
本発明は、プロセッシング装置及びスウィズルパターン生成器に利用されうる。
【符号の説明】
【００９８】
１００  プロセッシング装置
１０１  ベクトル演算器
１０２  ベクトルレジスタ
１０３  スウィズルパターン生成部
１１０  スウィズルドバーチャルレジスタ
１２０  スウィズリングネットワーク
３００、４００、５００  スウィズルパターン生成部
３０１、４０１  スウィズリングネットワーク
３０２、４０２  スウィズルドバーチャルレジスタ
５０１  スイッチングデバイス
５０２  コントローラ／保存デバイス
５０３  入線
５０４  出線
６００、７００  アレイブロック
６０２  スウィズルパターン生成部
６０４、７０８  スウィズリングネットワーク
６０６、７１０  スウィズルドレジスタファイル
６０７、  ６０８  ＭＵＸ
６０９、７０２  ベクトル実行部（ＶＰＵ）
６１０、７０４  出力ベクトルレジスタ
【図１】
2014530408.tif 000003
【図２Ａ】
2014530408.tif 000004
【図２Ｂ】
2014530408.tif 000005
【図３】
2014530408.tif 000006
【図４】
2014530408.tif 000007
【図５】
2014530408.tif 000008
【図６】
2014530408.tif 000009
【図７】
2014530408.tif 000010
【図８Ａ】
2014530408.tif 000011
【図８Ｂ】
2014530408.tif 000012
【図９Ａ】
2014530408.tif 000013
【図９Ｂ】
2014530408.tif 000014
【国際調査報告】
2014530408.tif 000015
2014530408.tif 000016