JP2014530408A - プロセッシング装置及びスウィズルパターン生成器 - Google Patents

プロセッシング装置及びスウィズルパターン生成器 Download PDF

Info

Publication number
JP2014530408A
JP2014530408A JP2014530590A JP2014530590A JP2014530408A JP 2014530408 A JP2014530408 A JP 2014530408A JP 2014530590 A JP2014530590 A JP 2014530590A JP 2014530590 A JP2014530590 A JP 2014530590A JP 2014530408 A JP2014530408 A JP 2014530408A
Authority
JP
Japan
Prior art keywords
vector
data
swizzle
register
swizzle pattern
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014530590A
Other languages
English (en)
Inventor
チョン,ム−ギョン
ソ,ウン
リュ,ス−ジョン
ユ,ドン−フン
チョウ,ヨン−ゴン
キム,ホ−ヨン
リ,ジン−ソク
ジン,スン−フン
キム,チャン−ム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2014530408A publication Critical patent/JP2014530408A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Abstract

ベクトル処理でスウィズル命令の実行によるオーバーヘッドを減らすスウィズルパターン生成器が開示される。スウィズルパターン生成器は、1つのベクトルレジスタ及びベクトル処理部のうち少なくとも1つのデータセットに関するスウィズルパターンを提供する。スウィズルパターン生成器は、互いに異なるベクトル演算に対して多様なスウィズルパターンを生成するように再構成可能である。

Description

本発明は、ベクトル演算のためのプロセッシング装置及びスウィズル命令に関する。
最近、マルチメディア、通信、グラフィックのような多くの応用のデータ処理要求量が急増している。高性能サーバコンピュータだけではなく、一般PCとさらにはモバイルデバイスでも、データ処理負荷の増加は機器の性能に相当な影響を与える。したがって、プロセッシング装置が短時間内に多くのデータを処理する必要があり、このために、多くの最新のプロセッサは、一回で処理するデータ幅を増やして、このような要求を満たしている。このような要求を満たすプロセッサをSIMD(Single Instruction Multiple Data)プロセッサと言い、あるいはベクトルプロセッサとも言う。
SIMDあるいはベクトルプロセッサは、1つの命令で多数のデータセットを同時に演算するために、データ処理に優れた性能を見せる。ベクトルあるいはSIMD演算(以下、“ベクトル演算”)を行うためには、ベクトルデータまたはベクトルデータエレメントが所望の順に準備していなければならない。例えば、演算を処理するベクトルプロセッシングユニットに関するベクトルレジスタ内にベクトル演算のためのデータセットが定められた順序で準備される。データセットを生成するために、多数のスカラーデータを集めてベクトルレジスタに入れる。ベクトル演算とベクトル演算との間にデータセットが伝達される時、そのデータエレメントが適切な順序で再整列されなければならず、ベクトル演算の結果をスカラー形態で保存するとき、やはり適切な順序によってデータエレメントのそれぞれが保存されなければならない。一例によれば、スウィズルド命令を用いてベクトル演算に関するデータセットのデータエレメントを整列または再整列することができる。
スウィズルド命令は、ベクトル演算の入力として判読されたデータセットを整列する。スウィズルド命令は、またベクトル演算の多様な命令の間に配置されることもある。例えば、スウィズル命令(Swizzle instruction)は、ロード(load)命令とベクトル演算命令との間に配されて、データセットを整列させることを行う。また、ベクトル演算命令とベクトル演算命令との間に位置して、最初のベクトル演算の結果を二番目のベクトル演算が使用できるように、データセットを再整列させる。また、ベクトル演算命令とストア(store)命令との間に位置して、データセットを所望の順に整列して外部に伝達する。
しかし、前記のように、スウィズル命令が、ロード命令、ストア命令、及びベクトル演算命令の間に配されれば、命令を実行するプロセッサの性能が低下する。場合によっては、ベクトル演算のためのあらゆるロード命令、ストア命令、及びベクトル演算命令の間に1つ以上のスウィズルド命令が配置される。その結果、プロセッサの性能が大きく低下する。
本発明は、プロセッシング装置及びスウィズルパターン生成器を提供することである。
本発明の一態様によるプロセッシング装置は、ベクトル演算のデータエレメントを含むデータセットを保存するベクトルレジスタと、前記ベクトル演算を行うベクトル演算器と、前記ベクトルレジスタと前記ベクトル演算器とに連結され、前記データセットに関するスウィズルパターンを生成するスウィズルパターン生成器と、を含む。
本発明の他の態様によるプロセッシング装置は、ベクトル演算に関するデータセットを保存するベクトルレジスタと、前記ベクトル演算を実行するベクトル実行部と、前記ベクトルレジスタの出力と前記ベクトル実行部の入力とに連結され、前記データセットのデータエレメントを結合するか、順序を変更して、前記ベクトル演算のための入力としてスウィズルパターンを生成するスウィズルパターン生成部と、を含む。
本発明のさらに他の態様によるプロセッシング装置は、ベクトル演算を実行するベクトル実行部と、前記ベクトル実行部から受信したベクトル演算結果に対応するデータセットを保存するベクトルレジスタと、前記ベクトル実行部の出力に連結され、前記データセットのデータエレメントを結合するか、順序を変更して、前記ベクトルレジスタ内の前記データセットを保存すると同時に、スウィズルパターンを生成するスウィズリングネットワークと、前記スウィズリングネットワークに連結され、前記スウィズルパターンを保存するスウィズルドレジスタと、を含みうる。
本発明のさらに他の態様によるスウィズルパターン生成装置は、第1データエンドと、ベクトルレジスタ及びベクトル実行部のうち少なくとも1つの出力に連結された第2データエンドと、前記第1データエンドと前記第2データエンドとに連結される複数のデータコネクションを含み、前記複数のデータコネクションに基づいて、前記ベクトルレジスタ及び前記ベクトル実行部のうち少なくとも1つから出力されるデータセットに関して、スウィズルパターンを前記第1データエンドで生成するスウィズリングネットワークと、を含む。
本発明の一実施形態によるプロセッシング装置を示す図である。 本発明の一実施形態によるスウィズルパターンを示す図である。 本発明の他の実施形態によるスウィズルパターンを示す図である。 本発明の一実施形態によるスウィズルパターン生成器を示す図である。 本発明の他の実施形態によるスウィズルパターン生成器を示す図である。 本発明のさらに他の実施形態によるスウィズルパターン生成器を示す図である。 本発明の一実施形態によるプロセッシング装置がCGA(coarse grained array)に適用された一例を示す図である。 本発明の一実施形態によるプロセッシング装置がCGAに適用された他の例を示す図である。 順次的な2つのベクトル演算を処理する一般的なプロセッサの動作過程を示す図である。 図8Aの例による演算フローをCGAに適用した結果を示す図である。 図8Aの例による演算フローをスウィズルパターン生成器を利用するプロセッサに適用した結果を示す図である。 図9Aの例による演算フローがCGAに適用された結果を示す図である。
<発明の詳細>
本発明の一態様によるプロセッシング装置は、ベクトル演算のデータエレメントを含むデータセットを保存するベクトルレジスタと、前記ベクトル演算を行うベクトル演算器と、前記ベクトルレジスタと前記ベクトル演算器とに連結され、前記データセットに関するスウィズルパターンを生成するスウィズルパターン生成器と、を含む。
前記スウィズルパターン生成器は、前記データセットの前記データエレメントを結合するか、順序を変更して、前記スウィズルパターンを生成することができる。
プロセッシング装置は、前記ベクトル演算の他のデータエレメントを含む他のデータセットを保存する他のベクトルレジスタをさらに含み、前記スウィズルパターン生成器は、前記他のベクトルレジスタにも連結され、前記データセットの前記データエレメントと前記他のデータセットの前記他のデータエレメントとを結合して、前記スウィズルパターンを生成することができる。
プロセッシング装置は、前記ベクトル演算の他のデータエレメントを含む他のデータセットを保存する他のベクトルレジスタをさらに含み、前記スウィズルパターン生成器は、前記他のベクトルレジスタにさらに連結され、前記データセットの前記データエレメントと前記他のデータセットの前記他のデータエレメントとを結合して、前記スウィズルパターン及び他のスウィズルパターンを生成することができる。
前記スウィズルパターンが、前記ベクトル演算に関するデータセットとして前記ベクトルプロセッサに入力されうる。
前記スウィズルパターン生成器は、前記スウィズルパターンを生成するスウィズリングネットワークを含みうる。
前記スウィズリングネットワークは、前記スウィズルパターンを生成する複数のデータラインを含み、前記データラインのそれぞれは、一端が前記ベクトルレジスタの出力に連結され、他端を前記ベクトル演算器に連結させうる。
前記スウィズリングネットワークは、複数のデータラインを含み、前記データラインのそれぞれは、一端が前記ベクトル演算器の出力に連結されうる。
前記スウィズルパターン生成器は、前記スウィズルパターンを保存するスウィズルドレジスタを含みうる。
前記スウィズリングネットワークは、前記スウィズルパターンを生成する複数のデータラインを含み、前記データラインのそれぞれは、一端が前記ベクトル演算器の出力に連結され、他端を前記スウィズルドレジスタの入力に連結させうる。
前記スウィズリングネットワークは、前記スウィズルパターンを生成する複数のデータラインを含み、前記データラインのそれぞれは、一端が前記ベクトルレジスタの出力に連結され、他端が前記スウィズルドレジスタの入力に連結されうる。
前記スウィズルパターン生成器は、前記スウィズルパターンを保存するスウィズルドレジスタを含みうる。
前記スウィズリングネットワークは、多様なスウィズルパターンを生成するように再構成可能な複数のデータラインを含みうる。
前記スウィズリングネットワークは、前記複数のデータラインのそれぞれに対して再構成可能な連結を含み、前記再構成可能な連結に基づいて、前記多様なスウィズルパターンを生成するスイッチと、前記スイッチに連結され、前記多様なスウィズルパターンに対応する前記複数のデータラインに対する前記再構成可能な連結に関する多様なスイッチ連結を保存するスイッチングテーブルと、を含みうる。
前記スウィズルパターン生成器は、前記ベクトルレジスタからの前記データセットの出力と実質的に同時に前記スウィズルパターンを生成することができる。
前記スウィズルパターン生成器は、前記ベクトルレジスタからの前記データセットの入力と実質的に同時に前記スウィズルパターンを生成することができる。
本発明の他の態様によるプロセッシング装置は、ベクトル演算に関するデータセットを保存するベクトルレジスタと、前記ベクトル演算を実行するベクトル実行部と、前記ベクトルレジスタの出力と前記ベクトル実行部の入力とに連結され、前記データセットのデータエレメントを結合するか、順序を変更して、前記ベクトル演算のための入力としてスウィズルパターンを生成するスウィズルパターン生成部と、を含む。
プロセッシング装置は、前記ベクトル演算に関する他のデータセットを保存する他のベクトルレジスタをさらに含み、前記スウィズルパターン生成部は、前記他のベクトルレジスタの出力にさらに連結され、前記データセット及び前記他のデータセットのデータエレメントを結合するか、順序を変更して、前記ベクトル演算のための入力として、前記スウィズルパターン及び第2スウィズルパターンを生成するスウィズルパターン生成部を含みうる。
本発明のさらに他の態様によるプロセッシング装置は、ベクトル演算を実行するベクトル実行部と、前記ベクトル実行部から受信したベクトル演算結果に対応するデータセットを保存するベクトルレジスタと、前記ベクトル実行部の出力に連結され、前記データセットのデータエレメントを結合するか、順序を変更して、前記ベクトルレジスタ内の前記データセットを保存すると同時に、スウィズルパターンを生成するスウィズリングネットワークと、前記スウィズリングネットワークに連結され、前記スウィズルパターンを保存するスウィズルドレジスタと、を含みうる。
プロセッシング装置は、前記ベクトル実行部から受信した前記ベクトル演算結果に対応する他のデータセットを保存する他のベクトルレジスタと、他のスウィズルパターンを保存する他のスウィズルドレジスタと、をさらに含み、前記スウィズルパターン生成部は、前記データセット及び前記他のデータセットのデータエレメントを結合するか、順序を変更して、前記スウィズルパターン及び前記第2スウィズルパターンを生成することができる。
本発明のさらに他の態様によるスウィズルパターン生成装置は、第1データエンドと、ベクトルレジスタ及びベクトル実行部のうち少なくとも1つの出力に連結された第2データエンドと、前記第1データエンドと前記第2データエンドとに連結される複数のデータコネクションを含み、前記複数のデータコネクションに基づいて、前記ベクトルレジスタ及び前記ベクトル実行部のうち少なくとも1つから出力されるデータセットに関して、スウィズルパターンを前記第1データエンドで生成するスウィズリングネットワークと、を含む。
前記スウィズリングネットワークの前記複数のデータコネクションは、再構成可能であり、多様なデータコネクションの配列を生成し、前記多様なデータコネクションの配列に基づいて多様なスウィズルパターンを生成することができる。
前記スウィズリングネットワークは、前記第1データエンドから前記第2データエンドへの前記複数のデータコネクションを生成し、前記データコネクションの配列に基づいて多様なスウィズルパターンを生成する再構成可能なスイッチと、前記スイッチに連結され、前記多様なスウィズルパターンに対応する前記第1データエンドから前記第2データエンドへの前記再構成可能なスイッチに関する多様なデータコネクションの配列を保存するスイッチングテーブルと、を含みうる。
スウィズルパターン生成装置は、前記第1データエンドに連結され、前記多様なスウィズルパターンに対応する順序でデータエレメントを保存する少なくとも1つのスウィズルドレジスタをさらに含みうる。
スウィズルパターン生成装置は、前記第1データエンドに連結され、前記多様なスウィズルパターンに対応する順序でデータエレメントを保存する少なくとも1つのスウィズルドレジスタをさらに含みうる。
この際、前記第1データエンドで前記スウィズリングネットワークから出力されるデータエレメントは、少なくとも1つのバーチャルスウィズルドレジスタ及び出力されたデータエレメントの配列に対応するスウィズルパターンを提供することができる。
この際、前記第1データエンドで前記スウィズリングネットワークから出力されるデータエレメントは、少なくとも1つのバーチャルスウィズルドレジスタ及び出力されたデータエレメントの配列に対応するスウィズルパターンを提供することができる。
以下、添付した図面を参照して、本発明の実施のための具体例を詳しく説明する。後述する実施形態は、本発明を例示的に説明するためのものであって、本発明の権利範囲が、特定の実施形態に限定されるものではない。
図1は、本発明の一実施形態によるプロセッシング装置100を図示する。本実施形態によって、プロセッシング装置100は、単一コアを有するプロセッサ、多数のコアを有するプロセッサ、構成変更が可能なCGAマシンまたはVLIWマシンなどになりうる。
図1を参照すれば、本実施形態によるプロセッシング装置100は、ベクトル演算器101、多数のベクトルレジスタ102a、102b、102c、及びスウィズルパターン(swizzle pattern)生成部103を含む。
ベクトル演算器101は、ベクトル演算を行う。
それぞれのベクトルレジスタ102a、102b、102cは、ベクトル演算(例:ベクトルデータ)と関連した多数のデータエレメントを含むデータセットを保存する。例えば、ベクトル演算と関連したデータセットは、データエレメントとして配列された多数のスカラーデータを含みうる。
スウィズルパターン生成部103は、ベクトルレジスタ102cのデータセットに対するスウィズルパターンを生成する。スウィズルパターンとは、少なくとも1つのベクトルレジスタ(例えば、102c)に対するデータセットの各データエレメントを組み合わせるか、その整列順序を変更した結果である。または、第1ベクトルレジスタ(例えば、102b)に対するデータセットの各データエレメントと第2ベクトルレジスタ(例えば、102c)に対するデータセットの各データエレメントとを組み合わせた結果になり、例えば、図3及び図4で示したようである。スウィズルパターン生成部103が生成した1つまたはそれ以上のデータセットに関するスウィズルパターンは、1つまたはそれ以上のデータセット上でスウィズル命令を行った結果と同一であり得る。しかし、スウィズルパターン生成部103は、あるスウィズル命令の実行結果(すなわち、スウィズルパターン)と同じスウィズルパターンを、1つまたはそれ以上のデータセットに関するスウィズル命令の実行なしに提供することができる。その結果、スウィズル命令の実行と関連したオーバーヘッドが軽減または除去されて、全体的な性能が改善される。
本発明の一態様によって、スウィズルパターン生成部103は、スウィズルドバーチャルレジスタ110とスウィズリングネットワーク120とを含みうる。スウィズルドバーチャルレジスタ110は、図1で示した例のように、ベクトルレジスタ102a、102b、102cと同じ特性の物理的なベクトルレジスタになることもある。または、実際の保存ユニットを活用していない仮想のベクトルレジスタになることもある。スウィズルドバーチャルレジスタ110は、1つまたはそれ以上のベクトルレジスタのスウィズルパターンを有する物理的なまたは仮想のベクトルレジスタになりうる。
スウィズリングネットワーク120は、多数のワイヤまたはデータラインを含む。それぞれのワイヤまたはデータラインは、少なくとも2つのエンドを有する。図1の例で、ワイヤまたはデータラインの一端は、ベクトルレジスタ102cの入力と連結され、他端は、スウィズルドバーチャルレジスタ110に連結される。スウィズリングネットワーク120によって多様なスウィズルパターンが生成され、該生成されたスウィズルパターンが、スウィズルドバーチャルレジスタ110に保存されうる。例えば、ベクトルレジスタ102cにデータエレメント(例えば、x1、x2、x3、x4)が、x1、x2、x3、x4の順次に入力される場合、その入力と同時にスウィズルパターンの1つであるx3、x2、x4、x1の順序のデータセットが、スウィズリングネットワーク120によって生成され、該生成されたデータセットが、スウィズルドバーチャルレジスタ110に保存することができる。
図1では、スウィズリングネットワーク120の一端が、ベクトルレジスタ102cの入力に連結されることを図示した。しかし、これは、理解を助けるための1つの例に過ぎないものである。例えば、スウィズリングネットワーク120の一端は、ベクトルレジスタ102cの出力と連結されても良い。また、図1は、スウィズルパターンがベクトルレジスタ102cに保存された単一データセットに関して生成された場合を示す。
多数のベクトルレジスタ(例えば、102b、102c)の各データエレメントが、組合わせられた結果に対応するスウィズルパターンがスウィズルドバーチャルレジスタ110に保存されうる。
図2A及び図2Bは、本発明の一実施形態によるスウィズルパターンを図示する。これは、スウィズルパターンが何れか1つのベクトルレジスタのデータセットに基づいて生成される場合に関する一例になりうる。
図2Aを参照すれば、それぞれのベクトルレジスタ(例えば、vr0、vr1、vr2、vr3)は、ベクトルデータセット(例えば、{a3、a2、a1、a0}、{b3、b2、b1、b0}、{c3、c2、c1、c0}、{d3、d2、d1、d0})を保存する。本実施形態で、それぞれのベクトルデータセットは、4つのデータエレメントを含む。それぞれのスウィズルドレジスタ(例えば、svr0、svr1、svr2、svr3、svr4、svr5、svr6、svr7)は、何れか1つのベクトルレジスタのデータセットに関するスウィズルパターンを保存する。言い換えれば、何れか1つのスウィズルドバーチャルレジスタは、他の1つのベクトルレジスタのデータエレメントを組み合わせた結果、または、そのデータエレメントの整列順序を変更した結果を保存することができる。
例えば、スウィズルドレジスタsvr0は、スウィズルパターン(“a3、a3、a2、a2”)をベクトルレジスタvr0のデータセット({a3、a2、a1、a0})に関して保存することができる。この例で、スウィズルドレジスタsvr0によって保存されたスウィズルパターン(“a3、a3、a2、a2”)は、ベクトルレジスタvr0によって保存されたベクトルデータセット({a3、a2、a1、a0})のデータエレメント(a3)とデータエレメント(a2)とを結合することで得られる。
図2Bは、本発明の他の実施形態によるスウィズルパターンを図示する。これは、スウィズルパターンが、多数のベクトルレジスタのデータセットに基づいて生成される場合に関する一例になりうる。
図2Bを参照すれば、それぞれのベクトルレジスタ(例えば、vr0、vr1、vr2、vr3)は、ベクトルデータセット(例えば、{a3、a2、a1、a0}、{b3、b2、b1、b0}、{c3、c2、c1、c0}、{d3、d2、d1、d0})を含む。何れか1つのベクトルデータセットは、4つのデータエレメントを保存する。それぞれのスウィズルドレジスタ(例えば、svr0、svr1、svr2、svr3、svr4、svr5、svr6、svr7)は、多数のベクトルレジスタのデータセットに関するスウィズルパターンを保存する。言い換えれば、何れか1つのスウィズルドバーチャルレジスタは、複数個のベクトルレジスタのデータエレメントを組み合わせた結果、または、そのデータエレメントの整列順序を変更した結果を保存することができる。
例えば、スウィズルドレジスタsvr0は、スウィズルドパターン(例えば、a3、a3、b1、b1)をベクトルレジスタvr0によって保存されたデータセット({a3、a2、a1、a0})及びベクトルレジスタvr1によって保存されたデータセット({b3、b2、b1、b0})に関して保存する。本実施形態で、スウィズルドレジスタによって保存されたスウィズルパターン(“a3、a3、b1、b1”)は、ベクトルレジスタvr0のデータエレメント(a3)とベクトルレジスタvr0のデータエレメント(b1)とを結合することで得られる。
もちろん、スウィズルパターンは、図2A及び図2Bで例示したものの以外にも、多様な形態で提供されることがある。例えば、実行されるアプリケーションの種類によって所定のスウィズルパターンを定義して、一定個数のスウィズルパターンのみを使うことも可能である。
図3は、本発明の一実施形態によるスウィズルパターン生成部を図示する。これは、物理的な保存装置を活用したスウィズルパターン生成部に関する一例になりうる。
図3を参照すれば、スウィズルパターン生成部300は、スウィズリングネットワーク301及びスウィズルパターン保存装置302、例えば、スウィズルドバーチャルレジスタ302a、302bを含む。
スウィズリングネットワーク301は、多数のデータラインまたはワイヤで構成されても良い。それぞれのデータラインまたはワイヤは、少なくとも2つのエンドを有する。それぞれのデータラインまたはワイヤのエンドは、所定のスウィズルパターンが生成されるように、ベクトルレジスタの入力と連結され、他側のエンドは、スウィズルドバーチャルレジスタ302a、302bと連結される。
スウィズルドバーチャルレジスタ302a、302bは、ベクトルレジスタと物理的に同じ類型のベクトルレジスタが使われる。例えば、図3のスウィズルドバーチャルレジスタ302a、302bは、フリップフロップ、ラッチまたはメモリのようなハードウェアを用いて構成されても良い。
図3で、スウィズルドバーチャルレジスタsvr0の最初の領域は、スウィズリングネットワーク301を通じてベクトルレジスタvr0の最初の領域と連結される。また、スウィズルドバーチャルレジスタsvr0の二番目の領域も、スウィズリングネットワーク301を通じてベクトルレジスタvr0の最初の領域と連結される。類似した形態で、スウィズルドバーチャルレジスタsvr0の三番目及び四番目の領域は、ベクトルレジスタvr0の二番目の領域と連結される。したがって、ベクトルレジスタvr0にa3、a2、a1、a0の順序のデータセットが保存されると同時に、そのスウィズルパターンのうち1つであるa3、a3、a2、a2の順序のデータセットがスウィズルドバーチャルレジスタsvr0に保存することができる。
さらに、スウィズルドバーチャルレジスタsvr1は、ベクトルレジスタvr0のデータエレメントとベクトルレジスタvr1のデータエレメントとの組合わせ結果に対応するスウィズルパターンが保存されることが分かる。例えば、スウィズルドレジスタsvr1の第1領域は、ベクトルレジスタvr0の第1領域にスウィズリングネットワーク301を経由して連結される。スウィズルドレジスタsvr1の第2領域は、ベクトルレジスタvr0の第2領域にスウィズリングネットワーク301を経由して連結される。同様に、スウィズルドレジスタsvr1の第3、4領域は、ベクトルレジスタvr0の第3、4領域にスウィズリングネットワーク301を経由して、それぞれ連結される。したがって、ベクトルレジスタvr0、vr1が、a3、a2、a1、a0、及びb3、b2、b1、b0の順序を有するデータセットを保存することができる時には、実質的に同時にデータセットがスウィズルドレジスタsvr1に、例えば、a0、a1、b0、b1の順序で保存されることによって、スウィズルパターン(“a0、a1、b0、b1”)が、ベクトルレジスタvr0、vr1に保存されたデータセット({a3、a2、a1、a0}及び{b3、b2、b1、b0})の結合に関して生成される。
したがって、あるベクトル演算器が、スウィズル命令の実行結果を希望する場合、スウィズル命令を実行する代わりに、スウィズルドバーチャルレジスタ302a、302bに保存されているスウィズルパターンをそのまま利用することによって、スウィズル命令の実行によるオーバーヘッドを減らすことができる。
図4は、本発明の他の実施形態によるスウィズルパターン生成部を図示する。これは、保存装置を活用していないスウィズルパターン生成部に関する一例になりうる。
図4を参照すれば、スウィズルパターン生成部400は、スウィズリングネットワーク401及びスウィズルドバーチャルレジスタ402a、402bを含む。
スウィズリングネットワーク401は、多数のデータラインまたはワイヤで構成されても良い。それぞれのデータラインまたはワイヤは、所定のスウィズルパターンが生成されるように、その一端がベクトルレジスタの出力と連結され、他の一端がスウィズルドバーチャルレジスタ402a、402bと連結される。
図3と異なって、図4のスウィズルドバーチャルレジスタ402a、402bは、如何なる保存装置または保存空間ではない仮想のレジスタになりうる。すなわち、スウィズルドバーチャルレジスタ402a、402bは、ベクトルレジスタの出力ワイヤの組合わせで構成されても良い。
図4で、スウィズルドバーチャルレジスタsvr0の最初の領域は、スウィズリングネットワーク301を通じてベクトルレジスタvr0の最初の領域と連結される。また、スウィズルドバーチャルレジスタsvr0の二番目の領域も、スウィズリングネットワーク301を通じてベクトルレジスタvr0の最初の領域と連結される。類似した形態で、スウィズルドバーチャルレジスタsvr0の三番目及び四番目の領域は、ベクトルレジスタvr0の二番目の領域と連結される。したがって、ベクトルレジスタvr0にa3、a2、a1、a0の順序のデータセットが保存されると同時に、そのスウィズルパターンのうち1つであるa3、a3、a2、a2の順序のデータセットがスウィズルドバーチャルレジスタsvr0に保存することができる。
さらに、スウィズルドバーチャルレジスタsvr1は、ベクトルレジスタvr0からのデータエレメントと、ベクトルレジスタvr1からのデータエレメントとを組み合わせることで得られる結果に対応するスウィズルパターンを“保存”することができる。例えば、スウィズルドバーチャルレジスタsvr1の第1領域は、スウィズリングネットワーク401を経由して、ベクトルレジスタvr0の第1領域に“連結”される。スウィズルドバーチャルレジスタsvr1の第2領域は、スウィズリングネットワーク401を経由して、ベクトルレジスタvr0の第2領域に“連結”される。同様に、スウィズルドバーチャルレジスタsvr1の第3、4領域は、スウィズリングネットワーク401を経由して、ベクトルレジスタvr0の第3、4領域に“連結”される。したがって、ベクトルレジスタvr0、vr1が、a3、a2、a1、a0、及びb3、b2、b1、b0の順序を有するデータセットを保存することができるとき、実質的に同時にデータセットは、スウィズルドバーチャルレジスタsvr1内に、例えば、a0、a1、b0、b1の順序で“保存”されることによって、スウィズルパターン(“a0、a1、b0、b1”)をベクトルレジスタvr0、vr1に保存されたデータセット({a3、a2、a1、a0}及び{b3、b2、b1、b0})に関して生成する。
したがって、あるベクトル演算器が、スウィズル命令の実行結果を希望する場合、スウィズル命令を実行する必要なしに、スウィズルドバーチャルレジスタ402a、402bに対応するベクトルレジスタの出力を選択することができる。その結果、スウィズル命令の実行によるオーバーヘッドを減らすか、除去することができる。
前述した実施形態によるスウィズルパターンを用いて、アプリケーションで頻繁に使われるスウィズルパターンは、予め定義されたスウィズルパターンのためのハードウェアによって供給されるロジックによって生成されうる。しかし、プロセッサが、多数の互いに異なるアプリケーションを実行し、頻繁に使われるスウィズルパターンが、アプリケーションごとに異なる場合には、スウィズルパターンは、それぞれのアプリケーションに関してアプリケーションの実行前に定義されうる。したがって、再構成可能なハードウェアが使われて、それぞれのアプリケーションのためのロジックを提供することができる。図5は、それに関する一例である。
図5は、本発明のさらに他の実施形態によるスウィズルパターン生成部を図示する。図5で示すスウィズルパターン生成部は、再構成可能なスウィズリングネットワークを含み、再構成可能なスウィズリングネットワークは、例えば、再構成可能なスイッチングデバイスを含む。再構成可能なスイッチングデバイスは、スイッチングデバイスのデータ連結の入力と出力とを命令、またはコントローラ、メモリ、その他の保存装置から受信された入力によって再構成する。
例えば、図5で、スウィズルパターン生成部500は、再構成可能なスウィズリングネットワークを含む。再構成可能なスウィズリングネットワークは、再構成可能なスイッチングデバイス501及びスイッチングデバイスに関するコントローラ/保存デバイス502を含む。スイッチングデバイス501は、多数の入線503及び出線504を含む。スイッチングデバイス501は、多様な入線503と出線504との間の連結を制御する装置である。スイッチングデバイス501は、スイッチングデバイスの連結に基づいて、それぞれのアプリケーションに関する任意のスウィズルパターンや特定のスウィズルパターンを生成するのに使われる。
コントローラ/保存デバイス502は、スイッチングデバイス501が入線503と出線504との間の連結を構成するための構成情報を保存する。
入線数をm、出線数をnであるとすると、スイッチングデバイス501は、任意の入線と出線との接続、すなわち、(m×n)種類の接続を(m+n−1)個の制御素子で制御する。例えば、スイッチングデバイス501は、クロスバースイッチ501を用いて具現され、コントローラ/保存デバイス502は、スイッチングテーブルを用いて具現されうる。スイッチングテーブル502の内容を変えれば、クロスバースイッチ501の連結状態(すなわち、入線と出線との間の連結)が変更され、これにより、生成されるスウィズルパターンも変更されうる。
したがって、アプリケーション別によく使われるスウィズルパターンをあらかじめスイッチングテーブルに入れて置き、アプリケーション実行では、そのアプリケーションに対応するスウィズルパターンを使うことができる。
頻繁に使われるスウィズルパターン(ここでは、“スウィズルパターンセット”と言及する)は、アプリケーションによって互いに異なり、図5の再構成可能なスウィズリングネットワークは、互いに異なるアプリケーションに関するスウィズルパターンセットに対応するスウィズルドレジスタを活性化するのに使われる。同じスウィズルパターンセットを使うアプリケーションは、同じスウィズルパターンを共有することができる。また、もし、スウィズルパターンが、アプリケーションのある部分で頻繁に使われるが、そのアプリケーションのその他の部分で頻繁に使われるスウィズルパターンとは異なる場合、アプリケーションは、2つまたはそれ以上のスウィズルパターンセットを使うことができる。すなわち、アプリケーションを実行する過程で、再構成可能なスウィズリングネットワークが再構成されて、新たなスウィズルパターンセットを生成することができる。したがって、多数のアプリケーションが、1つのスウィズルパターンセットを共有し(スイッチングテーブルを共有し)、1つのアプリケーションが、経時的に互いに異なるスウィズルパターンセットを(または、スイッチングテーブルを)使うこともできる。
図6は、本発明の一実施形態によるプロセッサがCGA(coarse grained array)に適用されたアレイブロックの一例を図示する。
本実施形態で、アレイブロック600は、多数の他のアレイブロック(例えば、a、b、c、d)からの入力と、スウィズリングネットワーク604とスウィズルドレジスタファイル606(例えば、8つのスウィズルパターンやレジスタを含む)とを含むスウィズルパターン生成部602と、ベクトル実行部(VPU:vector processing unit)609、及び出力ベクトルレジスタ610と、を含む。本実施形態で、スウィズルパターン生成部602は、CGAアレイブロック600の入力に連結される。
図6を参照すれば、多様なアレイブロック(例えば、アレイa、b、c、d)からの入力をデータエレメント単位で組み合わせて、多様なスウィズルドバーチャルレジスタを構成することが分かる。ベクトル実行部は、ベクトル演算と関連したオペランドとして多様なアレイブロックから来る入力及び/またはスウィズルドバーチャルレジスタを選択することができる。図6で、VPU609は、複数の入力を受信して出力を生成する。1つの入力は、複数のベクトルレジスタ及び複数のスウィズルドレジスタのうちから1つを選択する。
図6で示すように、ベクトルレジスタの出力は、VPU609の入力側のMUX607、608に入力され、実質的に同時にスウィズリングネットワーク604に入力されて、スウィズルドレジスタを形成する。スウィズルドレジスタからの出力は、VPU609の入力側からMUX607、608に入力される。
ベクトルレジスタとスウィズルドレジスタとのうちの1つが、VPU609への入力として選択される。図6の実施形態で、スウィズルドレジスタファイル606は、8つのスウィズルレジスタを有する。8つのレジスタからの出力は、VPU609の第1入力(左側部分)になる。図6の実施形態で、あらゆるベクトルレジスタとあらゆるスウィズルドレジスタとがVPU609の第1入力になりうる。図面を単純化するために、残りのレジスタからの出力は、点で表現した。
図7は、本発明の一実施形態によるプロセッサがCGAに適用されたアレイブロックの他の例を図示する。アレイブロック700は、入力、ベクトル実行部702、出力ベクトルレジスタ704、及びスウィズルパターン生成部706を含み、スウィズルパターン生成部706は、スウィズリングネットワーク708及びスウィズルドレジスタファイル710(例えば、4つのスウィズルレジスタを含む)を含む。本実施形態で、スウィズルパターン生成部は、ベクトルレジスタとCGAアレイブロックの出力との間に配される。
図7を参照すれば、ベクトル実行部702の出力をデータエレメント単位で組み合わせて、多様なスウィズルドバーチャルレジスタを構成することが分かる。また、ベクトル実行部の出力を保存するベクトルレジスタが複数個ある場合、これらベクトルレジスタのデータエレメントを組み合わせて、スウィズルドバーチャルレジスタを構成することもできる。各スウィズルドバーチャルレジスタは、当該アレイブロックの入力として使い、出力に送って、他のアレイブロックで入力として使うこともできる。
次いで、本実施形態によるプロセッサと一般的なプロセッサとの動作を比較して説明すれば、次の通りである。
図8Aは、順次的な2つのベクトル演算を処理する汎用プロセッサの動作過程を図示する。図8Aを参照すれば、汎用プロセッサは、2つのベクトル演算を処理するために、6つのサイクルを必要とする。Cycle0で、ロード命令が実行されて、データセット(例えば、{x1、x2、x3、x4})をメモリからベクトルレジスタに入力する。Cycle1で、スウィズル命令がベクトル実行部によって実行されて、データセットに関するスウィズルパターン(例えば、{x1、x2、x3、x4})が決定され、その結果が、ベクトルレジスタに保存される。Cycle2で、ベクトル演算命令がベクトル実行部によって実行され、その結果(例えば、y1、y2、y3、y4)が、ベクトルレジスタに保存される。Cycle3で、スウィズル命令がベクトル実行部によって実行されて、ベクトルレジスタ内に保存されたスウィズルパターン(例えば、y4、y3、y2、y1)が決定される。Cycle4で、ベクトル演算命令がベクトル実行部によって実行され、その結果(例えば、z1、z2、z3、z4)が、ベクトルレジスタに保存される。Cycle5で、スウィズル命令にベクトル実行部によって実行されて、データセットに関するスウィズルパターン(例えば、z3、z4、z1、z2)が決定され、その結果が、ベクトルレジスタに保存される。Cycle6で、ベクトルレジスタを判読する“保存命令”が実行され、その結果であるデータセットがメモリに保存される。スウィズル命令は、サイクル1、3、5に実行される。汎用プロセッサは、3つのスウィズル命令を2つのベクトル演算に対して行うので、汎用プロセッサは、ベクトル演算を連続して行うことができない。その結果、汎用プロセッサの演算効率は、ベクトル演算命令の個数が増加するほど低下する。
図8Bは、図8Aの例をCGAでの演算に適用した結果を示す。図8Bには、CGAの12つのアレイブロックが図示される。
アレイブロック0は、メモリからデータセット(例えば、x1、x2、x3、x4)に関する命令をベクトルレジスタに入力する。アレイブロック1は、ベクトル実行部によってスウィズル命令を実行して、データセットに対するスウィズルパターン(例えば、x1、x2、x3、x4)を決定し、その結果をベクトルレジスタに保存する。アレイブロック2は、ベクトル実行部によってベクトル演算命令を実行し、その結果(例えば、y1、y2、y3、y4)をベクトルレジスタに保存する。アレイブロック3は、ベクトルレジスタ内に保存されたスウィズル命令をベクトル実行部によって実行する。アレイブロック4は、ベクトル実行部によってベクトル演算命令を実行し、その結果(例えば、z1、z2、z3、z4)をベクトルレジスタに保存する。アレイブロック5は、ベクトル実行部によってスウィズル命令を実行することによって、データセットに関するスウィズルパターン(例えば、z3、z4、z1、z2)を決定し、その結果をベクトルレジスタに保存する。アレイブロック(Array Block6)は、ベクトルレジスタを判読し、データセットをメモリに保存する命令を実行する。アレイブロック9−13は、アレイブロック1−5のベクトル実行部に入力されるスカラーレジスタをそれぞれ保存する。図8Bで示すように、CGAで具現されるプロセッサは、与えられた2つのベクトル演算のために、5つのベクトル演算部を使う。すなわち、3つのベクトル演算部は、スウィズル命令を実行するためにベクトル演算を行っていない。
図9Aは、図8Aの例を本発明の一実施形態によるプロセッサに適用してスウィズルドレジスタを含むスウィズルパターン生成器を具現した結果を示す。
図9Aを参照すれば、プロセッサは、2つのベクトル演算を処理するために、4つのサイクルを必要とする。サイクル0で、命令が実行されて、メモリからデータセット(例えば、x1、x2、x3、x4)がベクトルレジスタに入力され、データセットに関するスウィズルパターン(例えば、x1、x2、x3、x4)がスウィズルパターン生成器によって生成され、スウィズルパターンがスウィズルドレジスタに保存される。サイクル1で、ベクトル演算命令がベクトル実行部によって実行され、その結果(例えば、y1、y2、y3、y4)が、ベクトルレジスタに保存され、スウィズルパターン(例えば、y4、y3、y2、y1)が、スウィズルパターン生成部によって生成され、その結果が、スウィズルドレジスタに保存され、サイクル2の入力に提供される。サイクル2で、ベクトル演算命令がベクトル実行部によって出力スウィズルパターンに対して実行され、その結果(例えば、z1、z2、z3、z4)が、ベクトルレジスタに保存され、スウィズルパターン(例えば、z3、z4、z1、z2)が、スウィズルパターン生成部によって生成され、スウィズルパターンが、スウィズルドレジスタに保存される。サイクル3で、命令がスウィズルドレジスタを判読し、スウィズルパターンに対応するデータセットをメモリに保存する。
図9Aで、3つのスウィズル命令の実行結果に対応するスウィズルパターンが既定のスウィズルドバーチャルレジスタに保存されているために、スウィズル命令を実行せず、単純にスウィズルドバーチャルレジスタのデータセットを読み取ることが可能である。
図8Aと図9Aとを比較すれば、図8Aで、サイクル2のベクトル演算が実行された以後、次のベクトル演算のために、サイクル3でスウィズル命令が実行される。一方、図9Aでは、サイクル1のベクトル演算が実行されて、その実行結果が、ベクトルレジスタに保存されると同時に、所定のスウィズルパターンが、スウィズルドバーチャルレジスタに共に保存される。したがって、次のベクトル演算がサイクル2で即時実行される。したがって、実行サイクルが、6サイクルから4サイクルに軽減される。
また、図9Bは、本発明の一実施形態によるプロセッサがCGAにも適用可能であることを示す。すなわち、図8Bと比較して、不要にスウィズル命令を行うベクトル演算部がないために、全体ベクトル演算に参与するアレイブロックの個数を減らすことが可能である。
図9Bを参照すれば、CGAは、6つのアレイブロックを含み、2つのベクトル演算を処理する。アレイブロック0は、命令を実行して、メモリからデータセット(例えば、x1、x2、x3、x4)をベクトルレジスタに入力し、スウィズルパターン生成部は、スウィズルドレジスタに保存されたデータセットに関するスウィズルパターン(例えば、x1、x2、x3、x4)を生成する。アレイブロック1は、アレイブロック0から判読されたスウィズルパターンを用いてベクトル実行部によってベクトル演算命令を実行する。その結果(例えば、y1、y2、y3、y4)は、ベクトルレジスタに保存され、スウィズルパターン生成部は、対応するスウィズルパターン(例えば、y4、y3、y2、y1)を生成して、スウィズルドレジスタに保存する。アレイブロック2は、アレイブロック1のスウィズルドレジスタから判読されたスウィズルパターンを用いてベクトル実行部によってベクトル演算インストラクションを実行する。その結果(例えば、z1、z2、z3、z4)は、ベクトルレジスタに保存され、スウィズルパターン生成部は、対応するスウィズルパターン(例えば、z3、z4、z1、z2)を生成して、スウィズルドレジスタに保存する。アレイブロック3は、命令を実行してアレイブロック2のスウィズルドレジスタを判読し、データセットをメモリに保存する。アレイブロック4、5は、アレイブロック1、2のベクトル演算に対するベクトル実行部への入力に関するスカラーレジスタをそれぞれ保存する。
図8Bと図9Bとを比較すれば、図9Bのアレイは、図8Bで示すスウィズル命令を実行するための追加的なベクトル実行部を要しない。したがって、ベクトル演算を行うために、必要なアレイブロックの個数が(例えば、13つから5つに)軽減される。
したがって、詳細な説明によれば、スウィズル命令を実行せずとも、その実行結果と同じスウィズルパターンをベクトルレジスタのデータ入/出力と同時に提供することができる。したがって、スウィズル命令の実行による不要なオーバーヘッドを減らすことができる。
多様な実施形態が説明された。しかし、多様な変形が可能であることを理解しなければならない。例えば、システム、アーキテクチャー、デバイス、または回路内の構成要素が互いに異なる方式で結合されるか、等価の構成要素に置き換えられても、適切な結果が得られる。したがって、その他の形態で具現するとしても、下記特許請求の範囲に属するものである。
本発明は、プロセッシング装置及びスウィズルパターン生成器に利用されうる。
100 プロセッシング装置
101 ベクトル演算器
102 ベクトルレジスタ
103 スウィズルパターン生成部
110 スウィズルドバーチャルレジスタ
120 スウィズリングネットワーク
300、400、500 スウィズルパターン生成部
301、401 スウィズリングネットワーク
302、402 スウィズルドバーチャルレジスタ
501 スイッチングデバイス
502 コントローラ/保存デバイス
503 入線
504 出線
600、700 アレイブロック
602 スウィズルパターン生成部
604、708 スウィズリングネットワーク
606、710 スウィズルドレジスタファイル
607、 608 MUX
609、702 ベクトル実行部(VPU)
610、704 出力ベクトルレジスタ

Claims (23)

  1. ベクトル演算のデータエレメントを含むデータセットを保存するベクトルレジスタと、
    前記ベクトル演算を行うベクトル演算器と、
    前記ベクトルレジスタと前記ベクトル演算器とに連結され、前記データセットに関するスウィズルパターンを生成するスウィズルパターン生成器と、
    を含むプロセッサ。
  2. 前記スウィズルパターン生成器は、前記データセットの前記データエレメントを結合するか、順序を変更して、前記スウィズルパターンを生成する請求項1に記載のプロセッサ。
  3. 前記ベクトル演算の他のデータエレメントを含む他のデータセットを保存する他のベクトルレジスタをさらに含み、
    前記スウィズルパターン生成器は、前記他のベクトルレジスタにも連結され、前記データセットの前記データエレメントと前記他のデータセットの前記他のデータエレメントとを結合して、前記スウィズルパターン及び他のスウィズルパターンのうち一方又は両方を生成する請求項1に記載のプロセッサ。
  4. 前記スウィズルパターンが、前記ベクトル演算に関するデータセットとして前記ベクトルプロセッサに入力される請求項3に記載のプロセッサ。
  5. 前記スウィズルパターン生成器は、前記スウィズルパターンを生成するスウィズリングネットワークを含む請求項1に記載のプロセッサ。
  6. 前記スウィズリングネットワークは、前記スウィズルパターンを生成する複数のデータラインを含み、
    前記データラインのそれぞれは、一端が前記ベクトルレジスタの出力に連結され、他端が前記ベクトル演算器に連結される請求項5に記載のプロセッサ。
  7. 前記スウィズリングネットワークは、複数のデータラインを含み、
    前記データラインのそれぞれは、一端が前記ベクトル演算器の出力に連結される請求項5に記載のプロセッサ。
  8. 前記スウィズルパターン生成器は、前記スウィズルパターンを保存するスウィズルドレジスタを含む請求項5に記載のプロセッサ。
  9. 前記スウィズリングネットワークは、前記スウィズルパターンを生成する複数のデータラインを含み、
    前記データラインのそれぞれは、一端が前記ベクトル演算器の出力に連結され、他端が前記スウィズルドレジスタの入力に連結される請求項8に記載のプロセッサ。
  10. 前記スウィズリングネットワークは、前記スウィズルパターンを生成する複数のデータラインを含み、
    前記データラインのそれぞれは、一端が前記ベクトルレジスタの出力に連結され、他端が前記スウィズルドレジスタの入力に連結される請求項8に記載のプロセッサ。
  11. 前記スウィズルパターン生成器は、前記スウィズルパターンを保存するスウィズルドレジスタを含む請求項1に記載のプロセッサ。
  12. 前記スウィズリングネットワークは、多様なスウィズルパターンを生成するように再構成可能な複数のデータラインを含む請求項5に記載のプロセッサ。
  13. 前記スウィズリングネットワークは、
    前記複数のデータラインのそれぞれに対して再構成可能な連結を含み、前記再構成可能な連結に基づいて、前記多様なスウィズルパターンを生成するスイッチと、
    前記スイッチに連結され、前記多様なスウィズルパターンに対応する前記複数のデータラインに対する前記再構成可能な連結に関する多様なスイッチ連結を保存するスイッチングテーブルと、
    を含む請求項12に記載のプロセッサ。
  14. 前記スウィズルパターン生成器は、前記ベクトルレジスタからの前記データセットの出力又は入力と実質的に同時に前記スウィズルパターンを生成する請求項1に記載のプロセッサ。
  15. ベクトル演算に関するデータセットを保存するベクトルレジスタと、
    前記ベクトル演算を実行するベクトル実行部と、
    前記ベクトルレジスタの出力と前記ベクトル実行部の入力とに連結され、前記データセットのデータエレメントを結合するか、順序を変更して、前記ベクトル演算のための入力としてスウィズルパターンを生成するスウィズルパターン生成部と、
    を含むプロセッシング装置。
  16. 前記ベクトル演算に関する他のデータセットを保存する他のベクトルレジスタをさらに含み、
    前記スウィズルパターン生成部は、前記他のベクトルレジスタの出力にさらに連結され、前記データセット及び前記他のデータセットのデータエレメントを結合するか、順序を変更して、前記ベクトル演算のための入力として、前記スウィズルパターン及び第2スウィズルパターンを生成するスウィズルパターン生成部を含む請求項15に記載のプロセッシング装置。
  17. ベクトル演算を実行するベクトル実行部と、
    前記ベクトル実行部から受信したベクトル演算結果に対応するデータセットを保存するベクトルレジスタと、
    前記ベクトル実行部の出力に連結され、前記データセットのデータエレメントを結合するか、順序を変更して、前記ベクトルレジスタ内の前記データセットを保存すると同時に、スウィズルパターンを生成するスウィズリングネットワークと、
    前記スウィズリングネットワークに連結され、前記スウィズルパターンを保存するスウィズルドレジスタと、
    を含むプロセッシング装置。
  18. 前記ベクトル実行部から受信した前記ベクトル演算結果に対応する他のデータセットを保存する他のベクトルレジスタと、
    他のスウィズルパターンを保存する他のスウィズルドレジスタと、をさらに含み、
    前記スウィズルパターン生成部は、前記データセット及び前記他のデータセットのデータエレメントを結合するか、順序を変更して、前記スウィズルパターン及び前記第2スウィズルパターンを生成する請求項17に記載のプロセッシング装置。
  19. 第1データエンドと、
    ベクトルレジスタ及びベクトル実行部のうち少なくとも1つの出力に連結された第2データエンドと、
    前記第1データエンドと前記第2データエンドとに連結される複数のデータコネクションを含み、前記複数のデータコネクションに基づいて、前記ベクトルレジスタ及び前記ベクトル実行部のうち少なくとも1つから出力されるデータセットに関して、スウィズルパターンを前記第1データエンドで生成するスウィズリングネットワークと、
    を含むスウィズルパターン生成装置。
  20. 前記スウィズリングネットワークの前記複数のデータコネクションは、再構成可能であり、多様なデータコネクションの配列を生成し、前記多様なデータコネクションの配列に基づいて多様なスウィズルパターンを生成する請求項19に記載のスウィズルパターン生成装置。
  21. 前記スウィズリングネットワークは、
    前記第1データエンドから前記第2データエンドへの前記複数のデータコネクションを生成し、前記データコネクションの配列に基づいて多様なスウィズルパターンを生成する再構成可能なスイッチと、
    前記スイッチに連結され、前記多様なスウィズルパターンに対応する前記第1データエンドから前記第2データエンドへの前記再構成可能なスイッチに関する多様なデータコネクションの配列を保存するスイッチングテーブルと、
    を含む請求項19に記載のスウィズルパターン生成装置。
  22. 前記第1データエンドに連結され、前記多様なスウィズルパターンに対応する順序でデータエレメントを保存する少なくとも1つのスウィズルドレジスタをさらに含む請求項19又は20に記載のスウィズルパターン生成装置。
  23. 前記第1データエンドで前記スウィズリングネットワークから出力されるデータエレメントは、少なくとも1つのバーチャルスウィズルドレジスタ及び出力されたデータエレメントの配列に対応するスウィズルパターンを提供する請求項19又は20に記載のスウィズルパターン生成装置。
JP2014530590A 2011-09-14 2012-09-13 プロセッシング装置及びスウィズルパターン生成器 Pending JP2014530408A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2011-0092604 2011-09-14
KR1020110092604A KR101918464B1 (ko) 2011-09-14 2011-09-14 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치

Publications (1)

Publication Number Publication Date
JP2014530408A true JP2014530408A (ja) 2014-11-17

Family

ID=47830908

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014530590A Pending JP2014530408A (ja) 2011-09-14 2012-09-13 プロセッシング装置及びスウィズルパターン生成器

Country Status (6)

Country Link
US (2) US20130067203A1 (ja)
EP (1) EP2758866B1 (ja)
JP (1) JP2014530408A (ja)
KR (1) KR101918464B1 (ja)
CN (1) CN103797458B (ja)
WO (1) WO2013039335A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101918464B1 (ko) * 2011-09-14 2018-11-15 삼성전자 주식회사 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
JP6102528B2 (ja) * 2013-06-03 2017-03-29 富士通株式会社 信号処理装置及び信号処理方法
US9880845B2 (en) * 2013-11-15 2018-01-30 Qualcomm Incorporated Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods
CA2948929C (en) 2014-05-15 2020-05-12 Huawei Technologies Co., Ltd. Method and equipment for establishing millimetre connection
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
GB2577890B (en) * 2018-10-08 2021-03-10 Advanced Risc Mach Ltd Data processing with swizzle operation
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) * 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149400A (ja) * 2000-11-08 2002-05-24 Hitachi Ltd 複数レジスタ指定が可能なsimd演算方式
JP2008108220A (ja) * 2006-10-27 2008-05-08 Toshiba Corp 演算装置
JP2009529188A (ja) * 2006-03-06 2009-08-13 アナログ デバイシーズ インク 改良された置換可能なアドレス・プロセッサ及び方法
US20100106940A1 (en) * 2008-10-23 2010-04-29 International Business Machines Corporation Processing Unit With Operand Vector Multiplexer Sequence Control
JP2010250625A (ja) * 2009-04-17 2010-11-04 Digital Media Professional:Kk 3次元コンピュータグラフィック用プロセッサ

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040054877A1 (en) 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US20030167460A1 (en) * 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
GB2394571B (en) 2002-10-23 2005-08-10 Motorola Inc Arrangement system and method for vector permutation in single-instruction multiple-data microprocessors
US6862027B2 (en) 2003-06-30 2005-03-01 Microsoft Corp. System and method for parallel execution of data generation tasks
KR20070022239A (ko) 2004-03-31 2007-02-26 이세라 인코포레이티드 비대칭 듀얼 경로 프로세싱용 장치 및 방법
US9047094B2 (en) 2004-03-31 2015-06-02 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor
US7721069B2 (en) * 2004-07-13 2010-05-18 3Plus1 Technology, Inc Low power, high performance, heterogeneous, scalable processor architecture
US7681187B2 (en) 2005-03-31 2010-03-16 Nvidia Corporation Method and apparatus for register allocation in presence of hardware constraints
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
US7868894B2 (en) * 2006-11-28 2011-01-11 International Business Machines Corporation Operand multiplexor control modifier instruction in a fine grain multithreaded vector microprocessor
US8769251B2 (en) * 2006-12-13 2014-07-01 Arm Limited Data processing apparatus and method for converting data values between endian formats
US8356160B2 (en) * 2008-01-15 2013-01-15 International Business Machines Corporation Pipelined multiple operand minimum and maximum function
US7904699B2 (en) * 2008-03-10 2011-03-08 International Business Machines Corporation Processing unit incorporating instruction-based persistent vector multiplexer control
US7904700B2 (en) * 2008-03-10 2011-03-08 International Business Machines Corporation Processing unit incorporating special purpose register for use with instruction-based persistent vector multiplexer control
US20100332792A1 (en) * 2009-06-30 2010-12-30 Advanced Micro Devices, Inc. Integrated Vector-Scalar Processor
US8595428B2 (en) * 2009-12-22 2013-11-26 Intel Corporation Memory controller functionalities to support data swizzling
US8732437B2 (en) * 2010-01-26 2014-05-20 Oracle America, Inc. Low-overhead misalignment and reformatting support for SIMD
US9141386B2 (en) * 2010-09-24 2015-09-22 Intel Corporation Vector logical reduction operation implemented using swizzling on a semiconductor chip
KR101918464B1 (ko) * 2011-09-14 2018-11-15 삼성전자 주식회사 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치
GB2577890B (en) * 2018-10-08 2021-03-10 Advanced Risc Mach Ltd Data processing with swizzle operation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149400A (ja) * 2000-11-08 2002-05-24 Hitachi Ltd 複数レジスタ指定が可能なsimd演算方式
JP2009529188A (ja) * 2006-03-06 2009-08-13 アナログ デバイシーズ インク 改良された置換可能なアドレス・プロセッサ及び方法
JP2008108220A (ja) * 2006-10-27 2008-05-08 Toshiba Corp 演算装置
US20100106940A1 (en) * 2008-10-23 2010-04-29 International Business Machines Corporation Processing Unit With Operand Vector Multiplexer Sequence Control
JP2010250625A (ja) * 2009-04-17 2010-11-04 Digital Media Professional:Kk 3次元コンピュータグラフィック用プロセッサ

Also Published As

Publication number Publication date
US11003449B2 (en) 2021-05-11
EP2758866B1 (en) 2017-11-15
WO2013039335A1 (en) 2013-03-21
KR20130029274A (ko) 2013-03-22
EP2758866A4 (en) 2015-10-07
CN103797458B (zh) 2018-04-20
US20190155601A1 (en) 2019-05-23
KR101918464B1 (ko) 2018-11-15
US20130067203A1 (en) 2013-03-14
EP2758866A1 (en) 2014-07-30
CN103797458A (zh) 2014-05-14

Similar Documents

Publication Publication Date Title
JP2014530408A (ja) プロセッシング装置及びスウィズルパターン生成器
JPH0922404A (ja) 同報通信プロセッサ命令を備えたアレイ・プロセッサ通信アーキテクチャ
US7383419B2 (en) Address generation unit for a processor
JP6003744B2 (ja) 演算処理装置及び演算処理方法
JP4686435B2 (ja) 演算装置
JP3987782B2 (ja) アレイ型プロセッサ
US8601236B2 (en) Configurable vector length computer processor
CN112074810B (zh) 并行处理设备
JP2006011825A (ja) 再構成可能演算装置および半導体装置
US10387118B2 (en) Arithmetic operation unit and method of controlling arithmetic operation unit
JPWO2007099950A1 (ja) 高速pe間データ再配置機能を有するプロセッサアレイシステム
JP6378515B2 (ja) Vliwプロセッサ
JP4444305B2 (ja) 半導体装置
KR20090116511A (ko) 데이터 프로세싱 회로
JP7346235B2 (ja) 半導体装置
JP7250953B2 (ja) データ処理装置、及び人工知能チップ
WO2013095259A1 (en) Vector execution unit for digital signal processor
KR102358612B1 (ko) 연속적인 데이터 병렬처리가 가능한 병렬 처리장치
WO2013137459A1 (ja) データ供給装置及びデータ処理装置
Pechanek et al. An introduction to an array memory processor for application specific acceleration
JP2013114608A (ja) Vliwプロセッサと命令構造と命令実行方法
JP2010079361A (ja) プロセッサ、プロセッサのデータ処理方法、情報処理装置
KR20110103256A (ko) 다중 입출력 오퍼레이션 지원 프로세서 및 그 방법
JP2011198100A (ja) プロセッサ及びその制御方法
JP2009140514A (ja) 半導体装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150303

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150303

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160315

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160615

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20161004

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170112

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170123

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20170331

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180305