JP2008513903A - シャッフル演算のためのマイクロプロセッサデバイス及び方法 - Google Patents
シャッフル演算のためのマイクロプロセッサデバイス及び方法 Download PDFInfo
- Publication number
- JP2008513903A JP2008513903A JP2007533015A JP2007533015A JP2008513903A JP 2008513903 A JP2008513903 A JP 2008513903A JP 2007533015 A JP2007533015 A JP 2007533015A JP 2007533015 A JP2007533015 A JP 2007533015A JP 2008513903 A JP2008513903 A JP 2008513903A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- index
- processing
- memory
- shuffle
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 239000013598 vector Substances 0.000 claims abstract description 240
- 230000015654 memory Effects 0.000 claims abstract description 87
- 238000012545 processing Methods 0.000 claims abstract description 56
- 238000007781 pre-processing Methods 0.000 claims abstract description 18
- 230000008569 process Effects 0.000 claims abstract description 6
- 230000004044 response Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 230000018109 developmental process Effects 0.000 description 6
- 230000000875 corresponding effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 230000009885 systemic effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8061—Details on data memory access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
Abstract
本発明は、複数のインデックスベクトルを記憶するための第1のメモリ手段と処理手段とを備える少なくとも一つの機能的なベクトルプロセッサユニットを有するベクトルプロセッサアーキテクチャを備えるマイクロプロセッサデバイスであって、上記機能的なベクトルプロセッサユニットは、処理命令と処理されるべき少なくとも一つの入力ベクトルとを受け取るように構成されており、上記第1のメモリ手段は、上記処理命令に従って上記複数のインデックスベクトルのうちの一つを上記処理手段に対して与えるように構成されており、上記処理手段は、与えられた一つのインデックスベクトルに従って再配置される少なくとも一つの入力ベクトルの要素を有する少なくとも一つの出力ベクトルを上記命令に応じて生成するように構成されている、マイクロプロセッサデバイスに関する。上記機能的なベクトルプロセッサユニットは、処理された上記インデックスベクトルに従って上記少なくとも一つの出力ベクトルを生成する前にパラメータを受け取るとともに上記パラメータに応じて上記一つのインデックスベクトルの要素を処理するように構成されている前処理手段を更に備えている。本発明は、さらに、そのような機能的なベクトルプロセッサユニットによりベクトルを処理する方法に関する。
Description
本発明は、複数のインデックスベクトルを記憶するためのメモリ手段と処理手段とを備える少なくとも一つの機能的なベクトルプロセッサユニットを有するベクトルプロセッサアーキテクチャを備えるマイクロプロセッサデバイスであって、機能的なベクトルプロセッサユニットは、処理命令と処理されるべき少なくとも一つの入力ベクトルとを受け取るように構成されており、メモリ手段は、処理命令に従って複数のインデックスベクトルのうちの一つを処理手段に対して与えるように構成されており、処理手段は、与えられた一つのインデックスベクトルに従って再配置される少なくとも一つの入力ベクトルの要素を有する少なくとも一つの出力ベクトルを命令に応じて生成するように構成されているマイクロプロセッサデバイスに関する。対応して、本発明は、ベクトルを処理するための方法であって、処理命令と処理されるべき少なくとも一つの入力ベクトルとを受け取るとともに、複数のインデックスベクトルを第1のメモリ手段に記憶するステップと、上記処理命令に従って上記複数のインデックスベクトルのうちの一つを選択するステップと、上記命令に応じて、与えられた一つのインデックスベクトルに従って再配置される少なくとも一つの入力ベクトルの要素を有する少なくとも一つの出力ベクトルを生成するステップと、を含む方法に関する。
以下においてベクトルプロセッサと称されるそのようなマイクロプロセッサ及びそのような方法は、数十年前に確立されている。ベクトルプロセッサは、スカラープロセッサアーキテクチャのみを使用する(上記ベクトル又はパラレルアーキテクチャとは対照的)マイクロプロセッサにより与えられるようなスカラー命令の代わりに又は当該スカラー命令に加えて、ベクトル命令の組を与える。各命令は、典型的には、複数のデータワード又はベクトル要素、その長さ(ベクトル要素の数)、適用される演算を含むオペランドベクトルを指定する。ベクトル処理の利点は、一つのデータワードに関して連続的に演算するのではなく、ベクトルを全体的に同時に演算することができ−上記ベクトル命令のうちの一つの範囲内で−、それにより、計算速度が高められるという点である。例えば、一つのメモリアクセスにより、ベクトルプロセッサがベクトル全体を外部メモリから連続的にフェッチした後、ベクトルは、連続的に演算されて、最終的に他の一つのアクセスにより元の外部メモリに連続的に記憶される。従って、ベクトル処理は単一命令複数データ(SIMD)パラレル処理技術である。計算速度は、プロセッサがプロセッサの他の機能ユニットに近いその集積ベクトルレジスタに中間結果を保持できるようにするベクトルレジスタアーキテクチャを使用することにより更に高めることもでき、それにより、一時的な記憶要件、命令間の待ち時間等を低減することができる。
多くの異なるタイプのベクトル命令が存在し、それらのいくつかは、例えば一つのベクトルのシフト若しくはシャッフル又は二つ以上のベクトル要素等の加算、減算、乗算若しくは除算等の一つ以上のベクトルに関する演算を指定するベクトル−ベクトル命令;ベクトル及びスカラー積等のスカラーに関する演算を指定するベクトル−スカラー命令;一つ以上のベクトルに関する演算を指定し且つ外積等のスカラーを与えるベクトル−スカラー命令(ベクトル−換算);データを外部メモリと集積ベクトルレジスタとの間で転送するためのロード及び記憶演算を指定するベクトル−メモリ命令として分類することができる。例えば、ベクトルから配列を生成する配列演算を指定する命令等、タスクに応じて、より高度な命令を実施することができる。また、ベクトルに関する論理演算を指定する命令も可能である。最近の開発では、いくつかのベクトル命令が一つの命令ワード中に圧縮されてパラレルに実行され、それにより、先と同様、処理速度が高められる。この処理タイプは、超長命令語(VLIW)パラレル処理技術と称されている。
これらの命令の総ては、対応する機能ユニット(FU)により実行される。例えば、ベクトルメモリユニット(VMU)と称されるベクトル−メモリ命令に関与するFUは、集積ベクトルレジスタと、ベクトル−メモリ命令を受けて実施する処理手段とを含んでいる。後述する命令に従って、これらの処理手段は、外部メモリから要求されたベクトル要素をそのベクトルレジスタ内へロードし、又は、ベクトル要素を外部メモリ内に記憶する。通常、VMUは、プロセッサの外部の「外界」に接続される唯一のFUである。VLIW能力があるベクトルプロセッサ内には、超長命令語を受け取るとともに命令を順序付けて他の機能ユニットに対して分配するための更なる命令分配ユニット(IDU)が組み込まれている。
外部メモリ内のベクトル要素をアドレス指定する異なるアクセスパターンに従ってプロセッサがメモリにアクセスできるようにするいくつかのベクトル−メモリ命令がある。ベクトル要素が総てメモリ内で隣接している場合、即ち、要求されるべきベクトルを構成するデータワードが隣り合うメモリアドレスに位置されている場合、メモリバンクの組からのベクトルのフェッチは容易なタスクである。このアクセスは、通常、ユニットストライドアクセスと称されている。ある場合には、フェッチされるべきデータワードが明確な一定の変位量分だけメモリ内において離間される。これはストライドアクセス又はストライドnアクセスと称されている。この場合、nは、二つの隣り合うベクトル要素間のメモリ−アドレスの距離を示している。この場合において、命令は、VMUが一つのメモリアクセスで総てのデータをフェッチできるようにするためにストライドnを更に指定する。
しかしながら、時として、ベクトルの要素としてメモリからロードされるべき及び/又は元のメモリに記憶されるべきデータワードは、一定の変位量分だけ離間されず、むしろ、メモリ内の(予め計算された)任意の位置に及び/又はメモリ内において任意の順序で配置される。また、外部メモリの例えばP個のメモリバンクの順序は、一般に、ベクトル要素の取り出された順序/配信された順序と一致しない。プロセッサが一つのベクトル−メモリ命令中の任意に分布された要素データにアクセスできるようにするため、ベクトル要素が記憶される総ての記憶ロケーションを示すアドレスがVMUに対して与えられなければならない。これは、アドレス要素を含むアドレスベクトルを与える「ギャザー命令」と称されるベクトル−メモリ命令によって達成される。従って、いわゆる「スキャッター(scatter)命令」、即ち、他のベクトル−メモリ命令は、与えられたアドレスベクトルに従って一つのメモリアクセスでプロセッサがベクトル要素をメモリに記憶できるようにするために与えられる。
データワードがメモリ内の任意の位置に配置される場合、以下においてシャッフルユニット(SFU)とも称される冒頭で説明した機能ユニットは、メモリから得られるデータ要素を再配置する必要がある。シャッフルユニットのプログラミングは、「シャッフルパターン」を含む上記インデックスベクトルをシャッフルユニットに対して与えることを伴う。シャッフルパターンにおける各要素はソース要素の位置を指定する。図1には、ギャザー命令の例示が与えられている。図1においては、第1のレジスタ110がメモリの開始アドレス(100)を与える。第2のレジスタ120は、ロードされるべきベクトルの長さ(4)を与える。シャッフルパターン又はインデックスベクトル130は、例えば、位置1における値4を指定する。そのため、この場合には開始アドレス(address)後のメモリ140内の第4の要素である入力(ベクトル)の要素4の内容(content)は、プログラム等によって要求されるベクトルである出力ベクトル150の位置1へコピーされなければならない。
他のシャッフル方式では、上記例の場合のようにソース位置を指定する代わりに、ベクトル内の一つの要素の送信先位置が与えられる。しかしながら、これはあまり一般的ではない。
スキャッター演算又はギャザー演算において、適切なシャッフルパターン、より正確にはSFU内に入力される処理命令は、アドレスベクトル中のアドレス要素の最下位ビットによって決定される。他の用途、例えば、FFT入力ブロックの(サイズPの)セグメントをビット反転アドレス順序で読み取らせるためのソフトウェアコードにおいては、シャッフルパターンがコードによって直接に決定される。上記ベクトルプロセッサの場合、いくつかのシャッフルパターンは、シャッフル処理手段の近くで専用のシャッフルメモリ手段内に記憶される。SFUの既知のハードウェア実現の一例が図2に概略的に与えられている。SFU200は、P個のマルチプレクサ212,214,....,216からなる配列210を備えており、各マルチプレクサは、処理されるべき入力ベクトル240のためのP個の入力と、割り当てられたインデックスベクトルの要素又はシャッフルパターンのための一つの入力とを有している。シャッフルパターンは、要求された出力ベクトル250を得るために例えば入力ベクトル要素の再配置のためのプログラムコード又はアドレスベクトルから引き出される入力命令222に従ってシャッフルメモリ220から選択される。代替的な実現は、スイッチマトリクス等に基づくことができる。
アドレスベクトル要素がSFUによって再配置された後、データワードは、VMUによってフェッチされ、その後、要求されたアドレスの位置に適合するために再び再配置される。この場合も先と同様に、適切なシャッフルパターンは、アドレス要素の最下位ビットから得ることができる。
このようにして、適切な順序でデータを得るために、予め計算されたシャッフルパターンに係るシャッフルを適用することができる。一般に、メモリバンクへのアクセスパターンを変更なく再使用できる場合、スキャッター又はギャザーメモリアクセス又はコンピュータコード等の所定の用途においては数少ないシャッフルパターンで十分である。しかしながら、そのような制限が取り除かれると、シャッフルパターンの数は大幅に増大し、あるいは、シャッフルパターンに先行して回転演算等が行われなければならない。前者では、多くの更なるメモリトラフィックが引き起こされる可能性があり、後者では、更なる演算サイクル、従って、計算速度にコストがかかる。
クレイグ・ハンセン(Craig Hansen)による「マイクロ・ユニティのメディア・プロセッサ・アーキテクチャ(Micro Unity’s Media Processor Architecture)」(IEEEマイクロ(IEEE Micro),1996年8月、第36頁乃至第38頁) C.H.(Kees)van Berkel,Patrick P.E.Meuwissen,Nur Engin,and S.Balakrishnan,「CVP:3Gモバイル・ベースバンド・プロセッシングのためのプログラマブル・コ・ベクトル・プロセッサ(A Programmable Co Vector Processor for 3G Mobile Baseband Processing)」、世界無線会議(World Wireless Congress)2003の議事録において、及び、OnDSP(ドレスデンの後、システモニックの前(PS−Dresden,formerly Systemonic))において、及び、EVP(PS’DSPイノベーション・センター(Innovation Centre))において
クレイグ・ハンセン(Craig Hansen)による「マイクロ・ユニティのメディア・プロセッサ・アーキテクチャ(Micro Unity’s Media Processor Architecture)」(IEEEマイクロ(IEEE Micro),1996年8月、第36頁乃至第38頁) C.H.(Kees)van Berkel,Patrick P.E.Meuwissen,Nur Engin,and S.Balakrishnan,「CVP:3Gモバイル・ベースバンド・プロセッシングのためのプログラマブル・コ・ベクトル・プロセッサ(A Programmable Co Vector Processor for 3G Mobile Baseband Processing)」、世界無線会議(World Wireless Congress)2003の議事録において、及び、OnDSP(ドレスデンの後、システモニックの前(PS−Dresden,formerly Systemonic))において、及び、EVP(PS’DSPイノベーション・センター(Innovation Centre))において
従って、本発明の目的は、計算速度の低下を許容することなくシャッフル構成パターンの数を最小限に抑制するために上記マイクロプロセッサを進歩させることである。
本発明の第一の態様によれば、この目的は、冒頭の段落において述べたようなベクトルプロセッサによって達成され、そのために、上記機能的なベクトルプロセッサユニットは、処理された上記インデックスベクトルに従って上記少なくとも一つの出力ベクトルを生成する前にパラメータを受け取るとともに上記パラメータに応じて上記一つのインデックスベクトルの要素を処理するように構成されている前処理手段を更に備えている。
そのような前処理手段を備えるFU、例えばSFUを有するベクトルプロセッサは、所定のシャッフルパターンに従ってデータ(又はアドレス)ベクトル内の要素をシャッフルする機能と、好ましくはスカラー値である上記パラメータにより指示されるデータベクトルを更に処理する機能とを組み合わせる。従来の技術のハードウェア実施において、シャッフル演算及び更なるデータ処理(並び換え等)は、二つの連続するステップと、それぞれがそれ自体の制御を有する二つのスイッチネットワーク又は二つのネットワーク再使用とを必要とするが、本発明に係るシャッフル及び更なるデータ処理は、一つのステップで行うことができるとともに、制御を一つの制御ステップに組み合わせることができる。これは、実際にはインデックスベクトル自体が処理され、多くのアーキテクチャの場合のようにインデックスベクトル及びパラメータの両方が入力データベクトルの前に一つ以上のクロックサイクルに達するからであり、インデックスベクトルの処理を前もって実行できるからである。最後に、(前)処理されたインデックスベクトルに基づくデータベクトルのシャッフルは、一つのクロックサイクルで実行することができる。本発明に係るベクトルプロセッサは、特にスキャッター−ギャザーメモリアクセスと組み合わせて、アルゴリズムの大きなクラスを加速させるために使用することができ、それにより、更なるメモリトラフィックを低いレベルに維持することができる。
インデックスベクトルの(前)処理は、一般に、インデックスベクトル及びパラメータ又はスカラー値に関する任意の算術演算又は論理演算であってもよい。本発明の使用により、原理上、ビット操作演算さえも一つのステップで行うことができる。これに関して、ビット操作は、「マイクロ・ユニティのメディア・プロセッサ・アーキテクチャ(Micro Unity’s Media Processor Architecture)」(IEEEマイクロ(IEEE Micro),1996年8月、第36頁乃至第38頁)(非特許文献1)においてクレイグ・ハンセン(Craig Hansen)によりブロードバンドメディアプロセッサに関連して記載されるような演算を示す。これらの一般化された切り換え命令は、ベクトル要素の配置を様々な態様で変更する。それにより、多くの一般に必要とされる再配置が一つの命令で行われるとともに、一連の三つの命令により再配置を適宜に得ることさえできる。グループシャッフル演算、グループスウィズル(group−swizzle)演算、グループ抽出演算、グループ圧縮演算、グループデポジット演算、グループ・マージ・デポジット演算、グループ引き出し演算、グループシフト演算、グループ回転演算は、そのような単一命令演算のいくつかの例である。いくつかのパラメータは、再配置の「程度」を正確に指定する特定の命令の即値(即時)フィールドからデコードされる。例えばグループシャッフル命令の場合には、三つの命令パラメータが、一般に、ベクトルがシャッフルされるサイズ(ビットサイズ)、ベクトルのサイズ、シャッフルの程度を指定する。他の命令では、特定の数のパラメータが減少させられてもよい。
本発明の上記第一の態様の更なる展開を構成する第二の態様によれば、上記機能的なベクトルプロセッサユニットは、複数のパラメータを記憶するための第2のメモリ手段を更に備え、上記第2のメモリ手段は、上記処理命令に従って上記複数のパラメータのうちの一つを上記前処理手段に対して与えるように構成されている。これらの第2のメモリ手段は、オフセットメモリとも称される。
これは、パラメータがコンパイル時定数ではないスカラー値である場合に有益となり得る。ベクトルユニットと並行して動作するスカラー処理ユニットは、これらの「オフセット」を計算することができるとともに、それを指定されたオフセットメモリ内に記憶することができる。
本発明の上記第一又は第二の態様の更なる展開を構成する第三の態様によれば、上記前処理手段は、符号を有するスカラー値をパラメータとして受け取るとともに、上記スカラー値及び上記符号に応じて上記インデックスベクトルの要素を処理するように構成されている。
これにより、結果として、前処理機能の数を増加させることなく多種多様なインデックスベクトルを得ることができる。
本発明の上記第一乃至第三の態様のいずれかの更なる展開を構成する第四の態様によれば、上記前処理手段は、上記パラメータ及び上記一つのインデックスベクトルの各要素のモジュロ加算を実行するように構成されている。
この態様に係る一つのインデックスベクトルの処理は、一定値モジュロ(好ましくは、ベクトルの長さ)を各要素に加算することを含み、その結果、データベクトルに関する複合的なシャッフル及び回転演算が得られる。これらの場合には、以下、パラメータ又はスカラー値を回転オフセット(L)とも称する。この実施は、典型的な用途で使用されるシャッフルパターン同士が関連付けられ且つ多くの場合に前のシャッフルパターンの回転となることを考慮に入れる。尚、多くの用途においては、回転オフセットも連続して複数回再使用される。従って、特に回転機能をSFUに組み入れることにより、更なるメモリトラフィックを低いレベルに維持することができる。これらの第2のメモリ手段は、回転演算の場合には、回転オフセットメモリと称される。
例えば、第4の態様に係るモジュロ加算と第3の態様に係る符号付きスカラー値との組み合わせにおいては、マイナス符号のLが右回転方向を示すことができ、プラス符号のLが左回転方向を示すことができるとともに、L=0が入力ベクトルの0回転を示す(回転オフセットメモリが存在する場合には、回転オフセットメモリをリロードすることなく)。入力ベクトルの回転は、シャッフルの特定のケースである。従って、多くの+L個の場所による左回転は、処理された出力ベクトルにおける同じ位置に各入力ベクトル要素をマッピングするシャッフルパターン[0,1,2,.....,P]を前処理することにより得られるシャッフルパターン[L,L+1,L+2,...,P−1,0,1,....L−1]によって指定することができる(L<P)。より正確には、前処理されたシャッフルパターンを[(0+L)moduloP,(1+L)moduloP,(2+L)moduloP,....,(P+L)moduloP]として示すことができる。本発明に係るSFUは、回転オフセットLの値を用いてシャッフルパターン又はインデックスベクトルの要素を(前(プレ))インクリメントするため −尚、この前(プレ)インクリメントはモジュロPを演算しなければならない−、計算速度の低下を許容することなく、シャッフルメモリ手段内の個々のインデックスベクトルの数を、大幅に、即ち、1/Pだけ低減することができる。
本発明の上記第一乃至第三の態様のいずれかの更なる展開を構成する第五の態様によれば、上記前処理手段は、上記パラメータ及び上記一つのインデックスベクトルの各要素の飽和加算を実行するように構成されている。
インデックスベクトル要素とパラメータ又はスカラー値とのこの飽和加算により、入力データ又はアドレスベクトルに関する複合的なシャッフル及びシフト演算が得られる。L位置に関するシフト左/右は、右側又は左側(シフト方向によって決まる)のL個の空き位置が予め設定された定数、例えば値0で満たされる回転左/右の特定のケースと見ることができる。これは、モジュロ加算/減算を上記飽和加算/減算に置き換えることにより達成される。この場合、ソースインデックス値−1及びP−1をプリセット定数と称する。−1の値は、対象のレジスタ内の対応する要素中の要素を上書きすべきでないことを示す。従って、インデックス値は−1乃至P−1の範囲をとることができる。
本発明の上記第一乃至第三の態様のいずれかの更なる展開を構成する第六の態様によれば、上記前処理手段は、上記パラメータ及び上記一つのインデックスベクトルの各要素に関してXOR演算を実行するように構成されている。
インデックスベクトルに関するこの演算は、入力(データ)ベクトルのその後のシャッフル演算と共に、後述する「バタフライシャッフル」演算を達成するために使用することができる。バタフライシャッフルは、FFT、DCT、FHT(高速アダマール変換)のようにカーネルにおいて広く使用される。これらのカーネルにおいて、バタフライ演算の(ステップ)サイズ又はインクリメントは、通常、段階ごとに変化する。本発明のこの態様に係る実施は、各インデックスベクトル要素に関して実行されるXOR演算におけるオペランドであるスカラー入力値によってインクリメントが直接に決定されるため有益である。そうでなければ、バタフライのサイズが変化するたびに新たなシャッフルパターンをロードしなければならなくなり、それにより、データトラフィックが増加する。
本発明の第七の態様によれば、上記目的は、冒頭の段落において述べたような方法によってさらに達成され、そこではさらに、パラメータを受け取るステップと、上記パラメータに応じて上記一つのインデックスベクトルの要素を処理するステップとが、上記少なくとも一つの出力ベクトルを生成する上記ステップの前に、実行される。
主な適用分野は、例えばCVP(リサーチ(Research))で適用されるようなベクトル処理であり、C.H.(Kees)van Berkel,Patrick P.E.Meuwissen,Nur Engin,and S.Balakrishnan,「CVP:3Gモバイル・ベースバンド・プロセッシングのためのプログラマブル・コ・ベクトル・プロセッサ(A Programmable Co Vector Processor for 3G Mobile Baseband Processing)」、世界無線会議(World Wireless Congress)2003の議事録において、及び、OnDSP(ドレスデンの後、システモニックの前(PS−Dresden,formerly Systemonic))において、及び、EVP(PS’DSPイノベーション・センター(Innovation Centre))において(非特許文献2)、を参照されたい。上記発明は、多くの信号処理カーネルを大幅にスピードアップすることができる。これは、特に、メモリ境界(近傍)であり且つ不規則なアクセスパターンを有する用途に当てはまる。これらの例としては、ビデオコーデック、FFT、フォーマット変換、インタリービング等が挙げられる。
本発明の前述した及び他の目的、特徴、利点は、添付図面と併せて解釈される本発明の好ましい実施の形態の以下の説明から明らかとなる。
図3に概略的に示される本発明の実施の形態に係る予回転(pre−rotation)能力を有するFU300は、処理手段、より正確には、P個のマルチプレクサ312,314,....,316からなる配列310を備えており、これらのマルチプレクサは、並列のデバイスとして描かれているが、更に少ない数(1個に至るまで)のデバイス及びシリアル処理ステップにより実施することもできる。各マルチプレクサは、入力ベクトル320のP個の要素に対応するP個の入力を有している。一つの更なる入力は、インデックスベクトルの割り当てられた要素のため、又は、入力命令322に従ってFU300のメモリ手段即ちシャッフルメモリ320から選択されるシャッフルパターンのために与えられる。しかしながら、インデックスベクトル要素は、マルチプレクサ312,314,316に対して入力される前に、前処理手段、より正確には、いくつか(P個)のモジュロ加算器からなるコンバイナ360によるモジュロ加算を受ける。回転の方向及び大きさはスカラー入力332によって決定される。入力命令322及びスカラー入力332は、例えばアドレスベクトル又はプログラムコードから引き出される。インデックスベクトル自体は、処理された後、入力ベクトル340をシャッフルするためにマルチプレクサ配列310へ入力され、それにより、要求された出力ベクトル350が得られる。
図4のブロック図は、FUによって実行される入力データ又はアドレスベクトル440の複合的なシャッフル・データ処理(回転、シフト、バタフライ等の演算)を一つの制御ステップにより開始することができることを、より一般的な方法で示している。前処理手段460は、シャッフルパターン430及びスカラー入力432を受け取るとともに、一つの命令ベクトルを処理手段410に対して出力する。この命令ベクトルは、前処理されたシャッフルパターンを含んでいる。
図5に係るプログラムコードの部分は、Golay相関器の実施から引き出されたものである。Golay相関器は、例えば、一次同期コード(PSC)のための階層相関シーケンスを使用する呼び出し検索手続きにおける第3世代のモバイル技術において使用される。これは、ソフトウェアアプリケーション及びメモリアクセスで使用されるシャッフルパターンが相互に関連付けられ且つほとんどの場合に連続して複数回再使用された回転オフセットを伴う前のシャッフルパターンの回転であることを示す無数の例のうちの単なる一つに過ぎない。この例において、8個の(複素数)要素のベクトルは四つのメモリアクセス(read1乃至read4)によりフェッチされ、それにより、ptr(assume//aligned)におけるアクセスベクトルは、回転オフセットが2に等しいため、4番目のインクリメント後に再びアライメントされる。
図5のコードに従ったメモリアクセスが、図6に示されている。この場合、メモリにおける二つの連続するベクトル位置610,620,630,640が左側に示されており、また、メモリからの対応する出力(SFUの観点からは入力ベクトル)611,621,631,641が右側に示されている。最終的なシャッフル回転されたデータベクトル612,622,632,642がメモリ出力の直ぐ下側に示されている。簡単のため、また、良く理解できるように、入力ベクトルの処理はプレーン回転である。プレーン回転とは、要素値がそれらの位置に等しいインデックスベクトルを使用して達成できる最初のメモリアクセス(read1)において必要とされる再配置が無く、その後のそれぞれのメモリアクセスが回転を必要とすることを意味している。詳細には、シャッフルを伴わない最初のメモリアクセス(read1)のために使用されるシャッフルパターン[7,6,5,4,3,2,1,0]は、メモリ610から得られる順序と同じ順序を要素が有している第1の出力ベクトル612をもたらす。その後、同じシャッフルパターン −オン・ザ・フライ(on the fly)− が6のスカラー値を用いたモジュロ8加算を受け、それにより、シャッフルパターン[5,4,3,2,1,0,7,6]が与えられる。この前処理されたシャッフルパターンは、メモリアクセス(read2)から得られる入力データベクトル621を二つの要素だけ残して回転させ、それにより、出力データベクトル622が得られる。次のステップにおいて、最初のシャッフルパターン[7,6,5,4,3,2,1,0]は4のスカラー値によるモジュロ8加算を受け、それにより、シャッフルパターン[3,2,1,0,7,6,5,4]が与えられる。このシャッフルパターンは、次のメモリアクセス(read3)により得られる入力ベクトル631をシャッフルして(実際にはプレーン)回転させ、要素が四つだけ残して回転される出力ベクトル632を得るために使用される。そして、メモリアクセス(read4)から得られる最終的な入力ベクトル641は、最初のシャッフルパターンのモジュロ加算及び2のスカラー値によりもたらされるシャッフルパターン[1,0,7,6,5,4,3,2]を使用して六つの要素だけ残して回転される。これにより出力ベクトル642が得られる。この特定の用途においては、本発明に係るベクトルプロセッサに起因して、四つの個々のシャッフルパターンの代わりに、一つのシャッフルパターンが適切な「回転」値と共に使用された。
多くの高速フーリエ変換(FFT)の実施においてはFFTが実行される前に入力データ配列に関してビット反転置換が行われることが一般に知られている。また、シャッフル機能を使用してビット反転置換を行うことができることも知られている。そのようなビット反転において、入力データは、バイナリレベルで、即ち、ビット反転順序で、図7に示される「permute_bitrev」等の機能を利用して再編される。この例における入力は複素数データの二つの配列からなっているものとし、そのうちの一方は実数部分を含み、他方は虚数部分を含んでいる。しかしながら、ベクトルプロセッサの例において、入力データは複数の複素数からなる一つの配列として記憶され、各複素数の実数部分及び虚数部分は隣り合う記憶ロケーションに記憶される。従って、置換は、複素数の配列に関して実行される。図7の機能bitrev()は、図8の最も左側の列に示される数を戻す。
図8には、32ポイントFFTのためのビット反転アクセスパターンが示されるとともに、これが予回転を伴うシャッフル演算を利用して本発明に従ってどのように改善され得るのかが示されている。ビット反転は、前述した「ギャザー」演算をサポートするアーキテクチャにおいて非常に効率的に達成することができる。図8に関しては、一つのベクトルが8個の複素数データ要素のうちの最大値を保つことができ且つメモリバンク(ベクトルインデックス(vector index))の数が8個であり、一つのバンク内の一つの記憶ロケーションが一つの複素数データ要素を記憶できるものとする。アクセスパターンは一つの(ベクトル数(vector number)、メモリバンク数)タプル(組(tuple))からなる。また、例えばDMAコントローラにより図示の形態でデータ項目がメモリ内に配置されると仮定する。データのための単純なメモリ編成が想定される場合には、各バンクが一つのポートを有すると、図8に列挙されるアクセスパターンがメモリバンクの競合を引き起こす。例えば、図8の第1の破線と第2の破線との間に示されるビット反転アクセスの最初のグループは、メモリバンク0(ベクトルインデックス(vector index)=0)への四つのアクセスと、メモリバンク4(ベクトルインデックス(vector index)=4)への四つのアクセスとを使用する。そのため、メモリへのシリアルアクセスが必要とされ、それにより、利用可能なメモリ帯域幅の使用が非効率となる。
この場合にデータを編成する更に優れた方法は、連続するベクトル要素の開始アドレスを1メモリバンク分だけ回転させることである。このとき、これは、データをベクトルに書き込むために以下の表1に示されるようにデータをラッピングすること(包み込むこと(wrapping))を伴う。
表1:32ポイントFFTビット反転方式におけるメモリバンク競合を回避するための入力データのスキュー
ベクトル要素数
ベクトル0 0 1 2 3 4 5 6 7
ベクトル1 7 0 1 2 3 4 5 6
ベクトル2 6 7 0 1 2 3 4 5
ベクトル3 5 6 7 0 1 2 3 4
ベクトル4 4 5 6 7 0 1 2 3
ベクトル5 3 4 5 6 7 0 1 2
ベクトル6 2 3 4 5 6 7 0 1
ベクトル7 1 2 3 4 5 6 7 0
ベクトル8 0 1 2 3 4 5 6 7
・・・
ベクトル要素数
ベクトル0 0 1 2 3 4 5 6 7
ベクトル1 7 0 1 2 3 4 5 6
ベクトル2 6 7 0 1 2 3 4 5
ベクトル3 5 6 7 0 1 2 3 4
ベクトル4 4 5 6 7 0 1 2 3
ベクトル5 3 4 5 6 7 0 1 2
ベクトル6 2 3 4 5 6 7 0 1
ベクトル7 1 2 3 4 5 6 7 0
ベクトル8 0 1 2 3 4 5 6 7
・・・
表1に示されるデータ編成を用いると、バンク競合を伴うことなく、ベクトルインデックスが特定のアクセスで示される総てのデータ項目をフェッチすることができる。従って、総てのアクセスごとにメモリの全帯域幅を使用することができる。しかしながら、メモリシステムによって戻されたデータは、図8に示されるようにデータ要素の所望の順序でベクトルを得るために再配置されなければならない。例えば、図8に関連して詳細に示されるソースエンコーディング方式を使用すると、ビット反転アクセスのためのシャッフルパターンは、最初の組(ベクトル数(vector number)=0)においては[0,2,1,3,4,6,5,7]であり、次の組(ベクトル数(vector number)=1)に関しては[2,4,3,5,6,0,7,1]であり、その後は[1,3,2,4,5,7,6,0],[3,5,4,6,7,1,0,2]となる。尚、配列をベクトルのブロックに分ける場合には、シャッフルパターンの総ての数がビット反転ブロック数分だけインクリメントされる。例えば、我々は、0から始まって連続的に番号を付けることができる四つのブロックを有している。このとき、ブロック数は、0,1,2,3である。その場合、ビット反転ブロック数は、0,2,1,3である。これは、正確には、シャッフルパターンの各要素に対するインクリメントである。インクリメントは、シャッフルされたデータの回転を達成する。異なる数のポイント(2の累乗)を伴うFFTにおいて同様の方式を実施することができる。
本発明の他の実施の形態は、図9A及び図9Bに示されるように、バタフライ演算及びシャッフル演算の複合演算を利用する。これらの例では、32個の要素を有する入力ベクトル911を想定する。実際には、単純なバタフライ演算が適用される。即ち、この例では、シャッフルメモリから最初に供給されるインデックスベクトル(図示せず)は、一つの入力ベクトルの各要素を一つの出力ベクトルにおける同じ位置にマッピングする内容[31,30,....,1,0]を有している。任意の他の最初のシャッフルパターン(又は、インデックスベクトル)も同様に使用することができる。しかしながら、入力ベクトルをシャッフルする前に、インデックスベクトルが前処理を受ける。より正確には、図9Aに従って、対応する前処理手段は、インデックスベクトルの各要素に関してバイナリレベルでXOR演算を実行する。これにより、図9Aのケースにおける第2のオペランドは1の入力スカラー値となる。そのため、インデックスベクトルに対するXOR演算の結果として、場所を二つ一組でスワップする(ペアワイズスワップ(pair−wise swapping)する)入力(データ)ベクトル要素が得られる。このケースにおいて入力ベクトルに関して実行されるバタフライ演算のサイズ又はインクリメントは、1である。これは、各入力ベクトル要素が一つの位置だけをジャンプさせるからである。
図9Bによれば、オペランド値は4に等しい。従って、各インデックスベクトル要素のビットパターンに関してXOR演算を実行した後に入力ベクトルをシャッフルすることにより、それぞれが四つの連続するベクトル要素を含む8個の入力ベクトル要素ブロックが形成されて場所をペアワイズスワップする。このケースにおいて入力ベクトルに関して実行されるバタフライ演算のサイズは、4である。これは、各入力ベクトル要素が四つの位置をジャンプさせるからである。
本発明の使用は、メモリアクセス、FFT、DCT又はFHT用途に限定されない。本発明は、任意の種類の用途に適用することができ、また、一つ又は複数のその後の算術演算又は論理演算により以前に適用されたパターンから推定することができるシャッフルパターンを(再)使用する用途において最も有利である。その結果、少なくとも一つの機能的なベクトルプロセッサユニットを有するベクトルプロセッサアーキテクチャを備える本発明に係るマイクロプロセッサデバイスには、同じ及び/又は異なるパラメータ又はスカラー値を受け取り且つインデックスベクトルの要素をその後に及び/又はパラレルに処理するように構成されているいくつかの異なる及び/又は同一の前処理手段が設けられてもよい。いくつかのパラメータの場合、これらのパラメータは、一つの又は様々な命令からデコードすることができ及び/又は同じ若しくは異なる第2のメモリ手段から得ることができる。
Claims (10)
- 複数のインデックスベクトルを記憶するための第1のメモリ手段と処理手段とを備える少なくとも一つの機能的なベクトルプロセッサユニットを有するベクトルプロセッサアーキテクチャを備えるマイクロプロセッサデバイスであって、前記機能的なベクトルプロセッサユニットは、処理命令と処理されるべき少なくとも一つの入力ベクトルとを受け取るように構成されており、前記第1のメモリ手段は、前記処理命令に従って前記複数のインデックスベクトルのうちの一つを前記処理手段に対して与えるように構成されており、前記処理手段は、与えられた一つのインデックスベクトルに従って再配置される少なくとも一つの入力ベクトルの要素を有する少なくとも一つの出力ベクトルを前記命令に応じて生成するように構成されており、そのために、前記機能的なベクトルプロセッサユニットは、処理された前記インデックスベクトルに従って前記少なくとも一つの出力ベクトルを生成する前にパラメータを受け取るとともに前記パラメータに応じて前記一つのインデックスベクトルの要素を処理するように構成されている前処理手段を更に備えていることを特徴とするマイクロプロセッサデバイス。
- 前記機能的なベクトルプロセッサユニットは、複数のパラメータを記憶するための第2のメモリ手段を更に備え、前記第2のメモリ手段は、前記処理命令に従って前記複数のパラメータのうちの一つを前記前処理手段に対して与えるように構成されていることを特徴とする請求項1に記載のマイクロプロセッサデバイス。
- 前記前処理手段は、符号を有するスカラー値をパラメータとして受け取るとともに、前記スカラー値及び前記符号に応じて前記インデックスベクトルの要素を処理するように構成されていることを特徴とする請求項1に記載のマイクロプロセッサデバイス。
- 前記前処理手段は、前記パラメータ及び前記一つのインデックスベクトルの各要素のモジュロ加算を実行するように構成されていることを特徴とする請求項1に記載のマイクロプロセッサデバイス。
- 前記前処理手段は、前記パラメータ及び前記一つのインデックスベクトルの各要素の飽和加算を実行するように構成されていることを特徴とする請求項1に記載のマイクロプロセッサデバイス。
- 前記前処理手段は、前記パラメータ及び前記一つのインデックスベクトルの各要素に関してXOR演算を実行するように構成されていることを特徴とする請求項1に記載のマイクロプロセッサデバイス。
- 処理命令と処理されるべき少なくとも一つの入力ベクトルとを受け取るとともに、複数のインデックスベクトルを第1のメモリ手段に記憶するステップと、
前記処理命令に従って前記複数のインデックスベクトルのうちの一つを選択するステップと、
前記命令に応じて、与えられた一つのインデックスベクトルに従って再配置される少なくとも一つの入力ベクトルの要素を有する少なくとも一つの出力ベクトルを生成するステップと、
を含む、ベクトルを処理するための方法であって、
前記少なくとも一つの出力ベクトルを生成する前記ステップの前に、
パラメータを受け取るステップと、
前記パラメータに応じて前記一つのインデックスベクトルの要素を処理するステップと、
を更に含むことを特徴とする方法。 - 前記一つのインデックスベクトルの要素を処理する前記ステップは、前記パラメータ及び前記インデックスベクトルの各要素のモジュロ加算を含んでいることを特徴とする請求項7に記載の方法。
- 前記一つのインデックスベクトルの要素を処理する前記ステップは、前記パラメータ及び前記インデックスベクトルの各要素の飽和加算を含んでいることを特徴とする請求項7に記載の方法。
- 前記一つのインデックスベクトルの要素を処理する前記ステップは、前記パラメータ及び前記インデックスベクトルの各要素に関するXOR演算を含んでいることを特徴とする請求項7に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP04104559 | 2004-09-21 | ||
PCT/IB2005/053019 WO2006033056A2 (en) | 2004-09-21 | 2005-09-14 | Micro processor device and method for shuffle operations |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008513903A true JP2008513903A (ja) | 2008-05-01 |
Family
ID=35385641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007533015A Withdrawn JP2008513903A (ja) | 2004-09-21 | 2005-09-14 | シャッフル演算のためのマイクロプロセッサデバイス及び方法 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP1794671A2 (ja) |
JP (1) | JP2008513903A (ja) |
CN (1) | CN101061460B (ja) |
WO (1) | WO2006033056A2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013057872A1 (ja) * | 2011-10-18 | 2013-04-25 | パナソニック株式会社 | シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令 |
JP2016511491A (ja) * | 2013-03-15 | 2016-04-14 | クアルコム,インコーポレイテッド | 水平置換を用いるベクトル間接要素垂直アドレッシングモード |
JP2018500654A (ja) * | 2014-12-23 | 2018-01-11 | インテル・コーポレーション | ベクトルビット反転を実行するための方法および装置 |
JP2018500660A (ja) * | 2014-12-23 | 2018-01-11 | インテル・コーポレーション | ベクトルインデックスロードおよびストアのための方法および装置 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008126041A1 (en) * | 2007-04-16 | 2008-10-23 | Nxp B.V. | Method of storing data, method of loading data and signal processor |
US9513905B2 (en) | 2008-03-28 | 2016-12-06 | Intel Corporation | Vector instructions to enable efficient synchronization and parallel reduction operations |
US8547385B2 (en) * | 2010-10-15 | 2013-10-01 | Via Technologies, Inc. | Systems and methods for performing shared memory accesses |
US8688957B2 (en) | 2010-12-21 | 2014-04-01 | Intel Corporation | Mechanism for conflict detection using SIMD |
EP2674855B1 (en) | 2012-06-14 | 2016-11-23 | Telefonaktiebolaget LM Ericsson (publ) | An element selection unit and a method therein |
US9411584B2 (en) | 2012-12-29 | 2016-08-09 | Intel Corporation | Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality |
US9411592B2 (en) | 2012-12-29 | 2016-08-09 | Intel Corporation | Vector address conflict resolution with vector population count functionality |
US10379855B2 (en) * | 2016-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers |
US9959247B1 (en) | 2017-02-17 | 2018-05-01 | Google Llc | Permuting in a matrix-vector processor |
DE102017207876A1 (de) * | 2017-05-10 | 2018-11-15 | Robert Bosch Gmbh | Parallelisierte Verarbeitung |
US20200050452A1 (en) * | 2018-08-11 | 2020-02-13 | Intel Corporation | Systems, apparatuses, and methods for generating an index by sort order and reordering elements based on sort order |
CN114297138B (zh) * | 2021-12-10 | 2023-12-26 | 龙芯中科技术股份有限公司 | 向量混洗方法、处理器及电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1304086B (zh) * | 1999-12-13 | 2010-06-16 | 凌阳科技股份有限公司 | 可提升资料存取效率的微控制器结构 |
AU2001249122A1 (en) * | 2000-03-08 | 2001-09-17 | Sun Microsystems, Inc. | Processing architecture having field swapping capability |
US6922716B2 (en) * | 2001-07-13 | 2005-07-26 | Motorola, Inc. | Method and apparatus for vector processing |
US7162607B2 (en) * | 2001-08-31 | 2007-01-09 | Intel Corporation | Apparatus and method for a data storage device with a plurality of randomly located data |
CN1246770C (zh) * | 2003-02-13 | 2006-03-22 | 上海交通大学 | 具有取模地址运算的数字信号处理器 |
-
2005
- 2005-09-14 CN CN200580039646.XA patent/CN101061460B/zh not_active Expired - Fee Related
- 2005-09-14 WO PCT/IB2005/053019 patent/WO2006033056A2/en active Application Filing
- 2005-09-14 EP EP05782929A patent/EP1794671A2/en not_active Withdrawn
- 2005-09-14 JP JP2007533015A patent/JP2008513903A/ja not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013057872A1 (ja) * | 2011-10-18 | 2013-04-25 | パナソニック株式会社 | シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令 |
JPWO2013057872A1 (ja) * | 2011-10-18 | 2015-04-02 | パナソニックIpマネジメント株式会社 | シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令 |
US9292286B2 (en) | 2011-10-18 | 2016-03-22 | Panasonic Intellectual Property Management Co., Ltd. | Shuffle pattern generating circuit, processor, shuffle pattern generating method, and instruction sequence |
JP2016511491A (ja) * | 2013-03-15 | 2016-04-14 | クアルコム,インコーポレイテッド | 水平置換を用いるベクトル間接要素垂直アドレッシングモード |
JP2018500654A (ja) * | 2014-12-23 | 2018-01-11 | インテル・コーポレーション | ベクトルビット反転を実行するための方法および装置 |
JP2018500660A (ja) * | 2014-12-23 | 2018-01-11 | インテル・コーポレーション | ベクトルインデックスロードおよびストアのための方法および装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101061460B (zh) | 2011-03-30 |
WO2006033056A2 (en) | 2006-03-30 |
CN101061460A (zh) | 2007-10-24 |
EP1794671A2 (en) | 2007-06-13 |
WO2006033056A3 (en) | 2006-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008513903A (ja) | シャッフル演算のためのマイクロプロセッサデバイス及び方法 | |
ES2954562T3 (es) | Aprendizaje máquina acelerado por hardware | |
US9557994B2 (en) | Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number | |
US20050125637A1 (en) | Constant generation in SIMD processing | |
US11106591B2 (en) | Streaming engine with separately selectable element and group duplication | |
US20230359565A1 (en) | Streaming engine with multi dimensional circular addressing selectable at each dimension | |
US20190004797A1 (en) | Exposing valid byte lanes as vector predicates to cpu | |
TW200527203A (en) | A data processing apparatus and method for moving data between registers and memory | |
US6958718B2 (en) | Table lookup operation within a data processing system | |
EP3485385B1 (en) | Shuffler circuit for lane shuffle in simd architecture | |
US11921636B2 (en) | Streaming engine with flexible streaming engine template supporting differing number of nested loops with corresponding loop counts and loop offsets | |
US20240126549A1 (en) | Stream engine with element promotion and decimation modes | |
US11221982B2 (en) | Superimposing butterfly network controls for pattern combinations | |
US11804858B2 (en) | Butterfly network on load data return | |
CN109213525B (zh) | 具有快捷起始指令的流式传输引擎 | |
US20230022537A1 (en) | Streaming engine with compressed encoding for loop circular buffer sizes | |
US8489825B2 (en) | Method of storing data, method of loading data and signal processor | |
IL271636B1 (en) | Vector integration in a data processing device | |
US20240134800A1 (en) | Streaming engine with separately selectable element and group duplication | |
JP2004302647A (ja) | ベクトルプロセッサおよびレジスタのアドレス指定方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20080626 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080912 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20091111 |