JP2002510418A - マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法 - Google Patents

マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法

Info

Publication number
JP2002510418A
JP2002510418A JP54674899A JP54674899A JP2002510418A JP 2002510418 A JP2002510418 A JP 2002510418A JP 54674899 A JP54674899 A JP 54674899A JP 54674899 A JP54674899 A JP 54674899A JP 2002510418 A JP2002510418 A JP 2002510418A
Authority
JP
Japan
Prior art keywords
instruction
segment
register
transformation
stored
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.)
Granted
Application number
JP54674899A
Other languages
English (en)
Other versions
JP4158864B2 (ja
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.)
Koninklijke Philips NV
Original Assignee
Philips Electronics NV
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 Philips Electronics NV filed Critical Philips Electronics NV
Publication of JP2002510418A publication Critical patent/JP2002510418A/ja
Application granted granted Critical
Publication of JP4158864B2 publication Critical patent/JP4158864B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Discrete Mathematics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 SIMD方式で演算を適用できる数値を含むセグメントとしてフォーマットできるレジスタ用のデータ処理装置。さらに、1つのレジスタの異なるレジスタを、または異なるレジスタ内の異なる位置でのセグメントを組み合わせる演算を実行することが可能である。このように、専用に選択されたレジスタを提供することにより、多次元の分離可能な変換をレジスタ内の数値を置き換えずに実行することが可能となった。

Description

【発明の詳細な説明】 マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法 技術分野 本発明は、請求項1の特徴記載部分に記載されているデータ処理装置に関する 。 背景技術 このようなデータ処理装置は、PCT特許出願番号97/31308から公知である。こ のデータ処理装置は、SIMD(Single Instruction Multiple Data)命令などの並列 命令の制御下での並列処理を可能とする。SIMD命令は、同じ演算を何度も並列に 適用する。一般的にSIMD命令は、通常、レジスタアドレスにより2つのオペラン ドを定義する。これらの各オペランドの内容は、パック化データの複数のセグメ ントとして扱われる。例えば、64ビットレジスタの内容は、このレジスタ内のビ ット位置0-15、16-31、32-47、48-63における4つの16ビットの数値として扱う ことができる。データ処理装置がSIMD命令に遭遇すると、同じ演算がオペランド 内の数値のいくつかの相異なるペアに並列に適用される。例えば、第1オペラン ドレジスタ内のビット位置0-15の内容が、第2オペランドレジスタ内のビット位 置0-15の内容に加えられ、第1オペランドレジスタ内のビット位置16-31の内容 が、第2オペランドレジスタ内のビット位置16-31の内容に加えられる。 SIMD命令を使用すると、1つの機能を行うために実行しなくてはならない命令 の数を減らすことができる。例えば、ピクセル値のブロックの個々の列の離散コ サイン変換(IDCT)を実行するという機能を考察する。ブロックの相異なる行のピ クセル値は、それぞれ相異なるオペランドに格納される。各オペランドにおいて 、ピクセル値は、セグメント内の位置のうち、ピクセル値の列によって決まる位 置に格納される。例えば、第1レジスタの場合、第1行、第1列のピクセル値は ビット位置0-15に格納され、第1行、第2列のピクセル値はビット位置16-32に 格納される。第2レジスタには、第2行からのピクセル値が格納され、以下同じ ように各行のピクセル値がそれぞれの列によって決まる位置に格納される。この 結 果、IDCTを1列に適用する演算用にコーディングされた一連の命令を実行すると 、算術演算がすべてSIMD命令を使用して実行される場合、IDCTが自動的に多数の 列について並列に実行される。これによって実行する必要のある命令の数が少な くなる。 分離可能な2次元IDCTの場合には、1次元IDCTをブロックの個々の列と個々の 行に適用する必要がある。この場合、列の変換と行の変換の間で行と列の役割を 交換すれば、同じように命令の数を減らすことができる。行と列の役割は、ブロ ックの置き換えによって交換できる。この置き換えにより、1つの列の相異なる ピクセル値が、1つの行の相異なるピクセル値に代えて同じレジスタに格納され る。つまり置き換えにより、相異なるレジスタの(同じ列に)対応する位置の内容 が、別のレジスタ内の相異なる位置に移動される。しかしながら置き換えの実行 自体には、かなりの数の命令を加えることが必要となる。このため2次元変換で は、1次元変換に必要な命令数の2倍以上の命令数が必要となる。 SIMDの利点に対するこの制約は、パック化データの中の互いに対応しない位置 にあるデータを組み合わせる必要がある機能をプログラムしなくてはならないと きには、一般にはさらに大きくなる。この場合、互いに独立した数値を含むパッ ク化フォーマットとしてオペランドの内容を扱うSIMD並列命令を使用することは できず、またSIMD演算を使用できるようにデータを並べ替えるための追加演算が 少なくとも必要となる。 発明の開示 本発明の目的は、実行する必要のある命令の数をさらに減らすことができる、 於て書きに記載した処理装置を提供することである。 本発明のデータ処理装置は、請求項1の特徴記載部分を特徴とする。これによ り、オペランド内の互いに同じでない位置のセグメントを組み合わせ、または相 異なる演算を使用して、オペランドのセグメントの相異なる組み合わせをつくる 、並列演算をプログラムすることができる。これは、同じ位置のセグメントのペ アに毎回同じ演算を適用する先行技術のSIMD命令とは対照的である。本発明の命 令の場合、例えば、オペランドレジスタのビット位置0-15に格納されている数値 が、 ビット位置16-31に格納されている数値に加算され、それと並列に、ビット位置3 2-47に格納されている数値が、ビット位置48-63に格納されている数値に加算さ れる。 同一オペランドレジスタ内のセグメントを組み合わせる演算と、異なるオペラ ンドレジスタ内のセグメントを組み合わせる演算の両方に対する命令を提供する ことができる。1つまたは複数の如何なるセグメントも、2つ以上の演算で使用 することができる。並列に実行される演算は、すべて同じタイプの演算(例:す べて加算)でも良いし、相異なる演算(例:加算と減算)でも良い。 通常、SIMD命令以外には、セグメントを組み合わせるアプリケーション固有命 令は、ごく限られた命令セットしか提供されないであろう。例えば、相異なる位 置の特定のセグメント間での加算などの演算を行う命令が利用可能なとき、可能 なセグメントペアすべての間にその演算をプログラムする命令セットを用意する 必要はない。同様に、(少なくとも演算の1つが他の演算と異なる)いくつかのあ るセグメントペアをそれ自身の演算に組み合わせる命令が利用可能なとき、それ らのセグメントに適用される演算の可能な組み合わせすべてについて命令セット を用意する必要はない。如何なるアプリケーションに対しても、可能な演算すべ てまたは可能な演算の組み合わせすべてのうちのごく一部、および/またはセグ メントの可能な組み合わせすべてのうちのごく一部しか必要とされない。 ブロックについての分離可能な2次元変換に対しては、本発明は、ブロックの 置き換えなしに必要な命令の数を減らすことを可能にする。各レジスタは、1つ の行からの異なるピクセル値を含み、かつ別のレジスタが同じ列からのピクセル 値を同じセグメントに格納していてよい。列の変換は、SIMD命令を使用して実行 されるであろうが、行の変換は、相異なるセグメント内の同じ行からのピクセル 値を組み合わせる並列演算によって実行される。 例えば、IDCT命令の中で参照されるオペランドレジスタの異なるセグメントに 格納されている行のピクセル値から、その行全体のIDCTを計算するIDCT命令を提 供することもできる。また、レジスタ内の異なるセグメントのペアの内容の合計 と差を計算する演算も用いることができる。この演算は、IDCT変換とこれに類似 する変換で一般に必要となるタイプの演算である。 図面の簡単な説明 上述した本発明の利点とその他の利点について、以下の図を用い、例示的に説 明する。 第1図は、データ処理装置を示す。 第2図は、8点1次元IDCTの実行のデータフロー図の例を示す。 第3図は、本発明による命令のデータフロー図を示す。 第4a図と第4b図は、本発明による命令を実行するための機能単位を示す。 発明を実施するための最良の形態 第1図は、VLIW(Very Long Instruction Word)タイプのデータ処理装置を示す 。本発明は、VLIWタイプの装置を用いて図示されているが、このタイプの装置に 限定されるものではない。この装置は、命令発行ユニット10、多数の機能単位12 a-c、レジスタファイル14を有する。命令発行ユニット10は、機能単位12a-cとレ ジスタファイル14に結合された命令出力端を有する。レジスタファイル14は、機 能単位12a-cのオペランド入力/出力端に結合された読み取り/書き込みポート を有する。 1つの機能単位12aが、詳細に図示されている。この機能単位12aは、命令デコ ーダ120、多数のALU(算術論理演算ユニット)122a〜122d、第1入力レジスタ124a および第2入力レジスタ124b、出力レジスタ126を有する。命令デコーダは、ALU 122a〜122dに結合されている。入力レジスタ124aおよび124bは、多数のセグメ ントに分割されている。第1入力レジスタ124aおよび第2入力レジスタ124bのセ グメントは、ALU 122a-dに接続されている。 動作時には、命令発行ユニット10が、プログラムの中の連続する命令にアクセ スし、それらの命令を機能単位12a-cに発行する。機能単位12a-cに発行される命 令は、代表的には、1つの演算コード、2つのソースレジスタアドレス、1つの 結果レジスタアドレスを有する(命令のこれらの要素は必ずしも同時に発行され なくてもよい)。演算コードは、機能単位12a-cが実行しなけらばならない1つま たは複数の演算を定義する。ソースレジスタアドレスは、その1つまたは複数の 演算を実行する対象のオペランドが格納されるレジスタファイル14の中のレジス タを参照する。命令発行ユニット10は、これらのアドレスをレジスタファイル14 に適用する。結果レジスタアドレスは、1つまたは複数の演算の結果が格納され るレジスタファイル14の中のレジスタを参照する。命令発行ユニット10は、結果 レジスタアドレスをレジスタファイル14に適用する。 機能単位12a-cのほとんどは、各レジスタの内容を1つの数値として扱う。例 えば、レジスタの長さが64ビットの場合、その内容は、別の64ビットの数値に加 えたり、算術的あるいは論理的にシフト等ができる64ビットの数値として扱われ る。しかしながら機能単位12a-cの少なくともいくつかは、レジスタの内容を、 そのレジスタの各セグメントに格納されている一連の数値として扱うことが(ま たは扱うことも)できる。次のような専用演算を、これらの数値に対し互いに無 関係に並列に実行することができる。つまり、キャリービットによって1つのセ グメントから別のセグメントに桁上げされず、シフトによって1つのセグメント から別のセグメントにビットが桁送りされず、クリッピングが各セグメントごと に独立して行われる等である。 機能単位12aは、各レジスタの内容を、それぞれ個別の数値が格納されている 複数のセグメントとして扱う機能単位である。この目的のため、すべてのレジス タは、同じ方式で仮想的にセグメントに分割される。命令が実行されると、その 命令内で参照されるソースレジスタの各セグメントの内容が、ALU 122a-dのそれ ぞれに適用される。 SIMD命令の場合、2つのソースオペランド内の同じ位置にあるセグメントの内 容が、同じALU 122a-dに供給される。例えば、オペラントが64ビットであり、ビ ット位置0-15、16-31、32-47、48-63は、4つのセグメントS0、S1、S2、S3をそ れぞれ構成するとする。このとき両方のオペランドのビット位置0-15の内容は最 初のALU 122aに供給され、ビット位置16-31の内容は2番目のALU 122bに供給さ れる(以下同様)。またSIMD命令の場合、命令デコーダ120は、ALU 122a-dのす べてに同じ制御コードを適用する。このためALU 122a-dは、すべて同じタイプの 演算(例:加算)をそれぞれ別のセグメントに実行する。 STMD命令は、例えば、数値Bij(1=0..n、j=0..m)のブロックB(例:8×8ブロッ ク(n=7、m=7))の多数の列の1次元変換の計算に適用できる。そのために、ブロ ックの同じ行の数値は、1つのレジスタの各セグメントにロードされる。例えば 、数値B0,0、B0,1、B0,2、B0,3は、第1レジスタR1のセグメントS0、S1、S2、S3 にそれぞれロードされ、数値B0,4、B0,5、B0,6、B0,7は、第2レジスタR2のセグ メントS0、S1、S2、S3にそれぞれロードされ、数値B1,0、B1,1、B1,2、B1,3は、 第3レジスタR3のセグメントS0、S1、S2、S3にそれぞれロードされ、数値B1,4、 B1,5、B1,6、B1,7は、第4レジスタR4のセグメントS0、S1、S2、S3にそれぞれロ ードされる。 ここで、1列の変換を実行するプログラムがあり、このプログラムは、1列の 数値Bij(i=0..n)が格納されているレジスタに適用される加算、減算、乗算など の算術命令を含む命令で表現されていると仮定する。これらの算術命令すべてに SIMD命令が使われる場合、このプログラムは、多数の列j=0..3について並列に変 換を自動的に計算する。従って、列数がN、各レジスタの各セグメントにP個の数 値が格納されているブロックの場合、N個の列を変換するには、このプログラム をN/P回のみ実行すればよい。 分離可能な2次元変換の場合には、すべての列は上述のように変換できる。次 いで、変換後のブロックの行すべてを変換する必要がある。このような2次元変 換の例として、2次元IDCTがある。この場合、変換後のブロックAijは次のよう に表わされる。 ここで、u=0の場合Cu=1/sqrt(2)、それ以外ではCu=1であり、かつ0からN−1 までの整数について合計が実行される。この2次元変換は、最初に、 という1次元変換によって中間ブロックINTivを得、次いでこの中間ブロックに 次の1次元変換を適用することにより計算できる。 従って、この2次元変換は、2つの1次元変換、つまりBをINTにする変換とINT をAにする変換の合成として計算される(2つの変換の「合成」とは、1つの変換 の適用結果に別の変換が適用されることを意味する)。IDCTの例では、どちらの 1次元変換が最初に適用されるかは問題ではない。本例では、まずブロックBu,v の最初の添字に沿って合計を計算し、次に2番目の添字vに沿って合計を計算し ているが、この順序を逆にしても最終結果は同じである。 このような2段階の2次元変換は、SIMD命令を使うことにより計算速度を高め ることができる。中間ブロックBの数値Bu,vが前述したように格納されるとき、 つまり同じ行の数値Bu,v(v=0,1,2,3)がレジスタの各セグメントに格納されると きには、中間ブロックINTi,vの計算は、多数の列を並列に(第1列の中のv=0の 数値すべて、第2列の中のv=1の数値すべて、以下同様)変換することにより実 行できる。 例えば、第1レジスタのセグメントにTNTi,v(i=0..3、v=0)がそれぞれ格納さ れ、第2レジスタのセグメントにINTi,v、(i=4..7、v=0)がそれぞれ格納され、 第3レジスタのセグメントにINTi,v(i=0..3、v=1)がそれぞれ格納される(以下 同様)ように1つの列のいくつかの数値が1つのレジスタに格納されるように中 間ブロックの数値がレジスタに格納されている場合には、SIMD命令を使用して同 様の並列処理を行うことが可能である。この場合、中間ブロックINTの多数の行 は、SIMD命令を使用して並列に変換できる。 しかしながら、ブロックBからの中問ブロックINTの計算後には、数値は、レジ スタにこのように格納されることはないであろう。つまり、1つの列のいくつか の数値INTs,v、(i=0..3v=0)が1つのレジスタに格納されるのではなく、1つの 行のいくつかの数値INTi,v(i=0 v=0..3)が各レジスタに格納されるであろう。こ の理由は、中間ブロックの計算時には各列について個別に1次元変換を行う必要 があるのに対し、最終ブロックAの計算時には各行について個別に1次元変換を 行う必要があるためである。 両方のタイプの変換にSIMD命令を使えるようにするには、中間ブロックを置き 換える、つまりレジスタ間で数値を再編成する必要がある。これは複雑な操作で ある。4セグメントレジスタ、8×8ブロックの例では、置き換えのために16個の レジスタと、2つの入力をもつ32個の演算が必要となる。 本発明の目的は、この置き換えを不要とすることにある。行の変換に対して、 同じ行の異なる数値がレジスタに格納されている中間ブロックの数値の配置が、 そのま維持され、かつこれらのレジスタに格納されている行における1次元変換 を実行するために、これらのレジスタ内のこれらの数値を組み合わせる専用命令 が使用される。 専用命令を使用することにより、置き換えを行わずに2次元の分離可能な変換 を実行することできる。また3次元以上の変換も、1次元用のこの専用命令と、 2次元以上用のSIMDタイプの演算との組み合わせにより、他の方策を必要とせず に使用することができる。 もっとも単純な実行例では、1行のIDCT全体を実行できる機能単位が少なくと も1つ設けられる。1つの列の4つの数値をそれぞれ格納するレジスタを使用す る8点IDCTの場合、このような命令は、2つのオペランドレジスタと2つの結果 レジスタを必要とする。 第2図は、8点1次元IDCTの実行のデータフロー図の例を示す。このデータフ ロー図は、Proceedings International Conference on Acoustics,Speech and Signal Processing 1989(IC-IASSP‘89)の第988〜991頁に刊行された、C.Loeff ler、A.Ligtenberg、G.Moschytzらによって発表された「Practical Fast 1-D DCT Algorithms with 11 multiplications」という題名の記事の記載に基づいて いる。左側のノード30a-hは、変換する必要のある行における位置v=0..7の添字 vの値により数値を表わしている。右側ノード32a-hは、変換後の行における位 置j=0..7の添字jの値により変換後の数値を表している。ノード32a-hからの線 は、数値から各演算までのデータフローと、これらの演算の結果から別の演算ま たは変換後の数値までのデータフローを表す。演算は次のように表わされる。2 本の実線が入力しているドットは合計を表す。1本の実線と1本の破線が入力し ているドットは減算を表し、実線に沿って送られる数値から破線に沿って 送られる数値が引かれる。2つの入力と2つの出力をもつボックスは回転と因数 分解、つまり次の式に従う(X0,Y0)から(X1,Y1)への計算を表す。 X1=I(X0cosψ-Y0sinψ) Y1=I(X0sinψ+Y0cosψ) ボックス内には係数Iの値と角度の識別が記されていて、これらはあらかじめ決 められた値である。ブロックは、4つの乗算、加算、減算を使用して実行できる (これに代えて、3つの乗算と3つの加算を使うこともできる)。 1つの実行例の場合、行IDCT命令によってそのオペランドのセグメントの内容 をIDCT変換させる行IDCT命令を実行できる少なくとも1つの機能単位が設けられ ている。レジスタあたり4セグメントの8点IDCTの例では、行を変換するために 2つのオペランドが必要となる。そしてこのような命令は、変換を表す数値がそ の変換における周波数位置(frequency position)に従って各セグメントに書き込 まれる結果レジスタを2つ必要とする。 このような機能単位によるIDCTの実行は、個々の命令による実行よりもはるか に高速である。その理由は、少なくとも、オペランド内の異なる位置のセグメン トに格納されている数値の組み合わせを、機能単位内の配線によって実現できる ことにある。この配線は、IDCTに固有な配線である。さらに、第3図のデータフ ロー図は、このような機能単位ではかなり多くの並列処理が可能であるため、多 数の演算を並列に実行することにより実行速度をさらに高速にすることが可能で あることを示している。 このように、2次元IDCT変換は、列については算術SIMD命令を使用して、多数 の列に1次元IDCT変換を並列に適用し、かつ行についてはこれとは別の専用IDCT 命令を使用して、機能的に同じIDCT変換を行に適用することにより実行すること ができる。 プロセッサアーキテクチャによっては、機能単位が、代表的には1つの演算コ ード、2つのソースレジスタ参照、1つの結果レジスタ参照を含む標準の命令フ ォーマットを使用する必要がある。この場合、各機能単位は、レジスタファイル の 読み取りポートに接続される2つのポートと、レジスタファイルの書き込みポー トに接続される1つのポートを有することが出来る。しかしながら、2つ以上の レジスタに格納されている数値を変換するIDCT命令の場合、変換後の数値を書き 込むために2つ以上の結果レジスタが必要となる。1つの結果レジスタしか使用 できないアーキテクチャの場合、この要件は、論理上隣接する結果レジスタに時 間をずらして結果を順次書き込むなどのさまざまな方法で実現できる。これに代 えて、機能単位に並列に発行される2つの命令の組み合わせを使用することもで きる。通常、このような2つの命令は、2つの機能単位に対し並列に使用される であろう。これに代えて、IDCTを実行する1つの機能単位をプログラムする2つ の命令の組み合わせが使用される。この2つの命令の組み合わせを使用すること により、相異なる2つの結果レジスタを指定できる。並列に発行される各命令に 対しレジスタファイルへの1つの書き込みポートを備えるプロセッサの場合、こ の方法によって、レジスタファイルへの1つの書き込みポートを両方の結果に対 し確実に利用することが可能となる。 これに代えて、機能単位に対し2種類の命令、つまりレジスタ内の数値の半分 を生成する命令と、残りの半分を生成する命令とを定義することもできる。 より一般的には、どの命令も結果レジスタの最大数(例:1つ)より多くの結果 レジスタを必要としないように、IDCTの計算の部分ごとに専用の命令を用意して もよい。このような命令を選択するためには、IDCTデータフロー図を部分図に分 け、1つの専用命令を各部分図に割り当てても良い。すべての部分図の出力数を 一定数以下とすることにより、どの専用命令についても2つ以上の結果レジスタ は不必要となるようにすることができる。 第3図は、破線のボックス39a-gによって示される部分図への分割の例を示す 。各ボックスは、変換の計算速度を高めるために並列に実行される演算の組み合 わせを提供する多数の専用命令のデータフローを定義する。各命令の結果に必要 なセグメント数は4以下になっている。これらの命令は、各セグメント内の数値 の場所がSIMD変換に必要な場所に対応するように、つまり第3図の左側のv=0.. 3によって示される第1レジスタの各セグメント内の数値と、u=4..7によって示 される第2レジスタの各セグメント内の数値に対応するように定義される。 第1の例である、第1破線ボックス39aに対応する最初の命令INS1 R1,R2,R3は 、オペランドとして2つのレジスタR1、R2を参照する。この命令により、機能単 位は以下の演算を並列に実行する。 - 第1レジスタR1の第1セグメント内の数値(v=0)と第2レジスタR2の第1セグ メント内の数値(v=4)とを加算する。その結果を結果レジスタR3の第1セグ メントに格納する。 - 同じこれらの2つの数値の減算を行い、その結果を結果レジスタR3の第2セ グメントに格納する。 - 第1レジスタR1の第3セグメント(v=2)内の数値と第2レジスタR2の第3セグ メント内の数値を、係数sqrt(2)およびあらかじめ決められたサイン値とコ サイン値の回転におけるX0、Y0として使用する。その結果であるX1、Y1を、 結果レジスタの第3セグメントと第4セグメントに格納する。 第4b図は、INS1命令を実行するための機能単位40の例を示す。機能単位40は、第 1レジスタR1と第2レジスタR2の内容をそれぞれ受け取る2つの入力セクション 42、46と、この機能単位を作動させる命令デコーダ48、それにR1とR2の第1セグ メントS0の合計、R1とR2の第Lセグメントの差、R1とR2の第3セグメントS2の回 転を計算する演算回路44a-cを有する。これらの計算の結果は、結果レジスタR3 への書き込みのために、出力セクション49のセグメントS0〜S3に結合される。 2番目の例である、第2破線ボックス39bに対応する2番目の命令INS2 R3,R4 は、オペランドとして1つのレジスタR3を参照する。この命令により、機能単位 は以下の演算を並列に実行する。 - オペランドレジスタR3の第1セグメントと第4セグメントに格納されている 数値を加算し、その結果を結果レジスタR4の第1セグメントに格納する。 - オペランドレジスタR3の第2セグメントと第3セグメントに格納されている 数値を加算し、その結果を結果レジスタR4の第2セグメントに格納する。 - オペランドレジスタR3の第2セグメント内の数値からオペランドレジスタR3 の第3セグメント内の数値を減算し、その結果を結果レジスタR4の第3セグ メントに格納する。 - オペランドレジスタR3の第1セグメント内の数値からオペランドレジスタR3 の第4セグメント内の数値を減算し、その結果を結果レジスタR4の第4セグ メントに格納する。 第4a図は、INS2命令を実行する機能単位20の例を示す。機能単位20は、オペラン ドレジスタR3の内容を受け取る入力セクション、加算と減算を計算する演算装置 24a-bと25a-b、機能単位20を作動させる命令デコーダ28、出力セクション26を有 する。加算と減算の結果は、結果レジスタR4への書き込みのために出力セクショ ン26のセグメントS0〜S3に結合される。 3番目の例である、第3破線ボックス39cに対応する3番目の命令INS3R4,R5,R 6は、オペランドとして2つのレジスタR4、R5を参照する。この命令により、機 能単位は以下の演算を並列に実行する。 - 第1オペランドレジスタR4の第1セグメントとオペランドレジスタR5の第4 セグメントに格納されている数値を加算し、その結果を結果レジスタR6の第 1セグメントに格納する。 - 第1オペランドレジスタR4の第2セグメントと第2オペランドレジスタR5の 第3セグメントに格納されている数値を加算し、その結果を結果レジスタR6 の第2セグメントに格納する。 - 第1オペランドレジスタR4の第3セグメントと第2オペランドレジスタR5の 第2セグメントに格納されている数値を加算し、その結果を結果レジスタR6 の第3セグメントに格納する。 - 第1オペランドレジスタR4の第4セグメントと第2オペランドレジスタR5の 第1セグメントに格納されている数値を加算し、その結果を結果レジスタR6 の第4セグメントに格納する。 4番目の例である、破線ボックス39hに対応する4番目の命令INS4 R4,R5,R6は 、オペランドとして2つのレジスタR4、R5を参照する。この命令により、機能単 位は以下の演算を並列に実行する。 - オペランドレジスタR5の第4セグメントに格納されている数値から、第1オ ペランドレジスタR4の第1セグメントに格納されている数値を減算し、その 結果を結果レジスタR6の第4セグメントに格納する。 - 第2オペランドレジスタR5の第3セグメントに格納されている数値から、第 1オペランドレジスタR4の第2セグメントに格納されている数値を減算し、 その結果を結果レジスタR6の第3セグメントに格納する。 - 第2オペランドレジスタR5の第2セグメントに格納されている数値から、第 1オペランドレジスタR4の第3セグメントに格納されている数値を減算し、 その結果を結果レジスタR6の第2セグメントに格納する。 - 第2オペランドレジスタR5の第1セグメントに格納されている数値から、第 1オペランドレジスタR4の第4セグメントに格納されている数値を減算し、 その結果を結果レジスタR6の第4セグメントに格納する。 5番目の例である、第4破線ボックス39dに対応する5番目の命令INS5 R1,R2, R7は、オペランドとして2つのレジスタR1、R2を参照する。この命令により、機 能単位は以下の演算を並列に実行する。 - 第1ソースレジスタR1の第4セグメントと第2ソースレジスタR2の第2セグ メントからの数値を、結果レジスタR7の第2セグメントと第3セグメントに それぞれ格納する。 - 第2レジスタR2の第3セグメント(v=2)の中の数値と第1レジスタR1の第2セ グメントの中の数値を、係数2およびあらかじめ決められたサイン値とコサ イン値(45°に対応)の回転におけるX0、Y0として使用する。その結果のX1、 Y1を結果レジスタの第3セグメントと第4セグメントに格納する(この回転 は、45°のサインとコサインは互いに等しいので少ない回数の乗算で実行で きる)。 6番目の例である、第6破線ボックス39eに対応する6番目の命令INS6 R7,R8 は、オペランドとして1つのレジスタR7を参照する。この命令により、機能単位 は以下の演算を並列に実行する。 - オペランドレジスタR7の第1セグメントと第3セグメントに格納されている 数値を合計し、その結果を結果レジスタR8の第1セグメントに格納する。 - オペランドレジスタR7の第2セグメントと第4セグメントに格納されている 数値を合計し、その結果を結果レジスタR8の第4セグメントに格納する。 - オペランドレジスタR7の第1セグメント内の数値からオペランドレジスタR7 の第3セグメント内の数値を減算し、その結果を結果レジスタR8の第3セグ メントに格納する。 - オペランドレジスタR7の第4セグメント内の数値からオペランドレジスタR7 の第2セグメント内の数値を減算し、その結果を結果レジスタR8の第2セグ メントに格納する。 7番目の例である、第7破線ボックス39fに対応する7番目の命令INS7R8,R9は 、オペランドとして1つのレジスタR8を参照する。この命令により、機能単位は 以下の演算を並列に実行する。 - ソースレジスタR8の第1セグメントと第4セグメント内の数値を、係数sqrt( 2)およびあらかじめ決められたサイン値とコサイン値の回転におけるX0、Y0 として使用する。その結果のX1、Y1を結果レジスタR9の第1セグメント第4 セグメントに格納する。 - ソースレジスタR8の第2セグメントと第3セグメント内の数値を、係数sqrt( 2)およびあらかじめ決められたサイン値とコサイン値の回転におけるX0、Y0 として使用する。その結果のX1、Y1を結果レジスタR9の第2セグメント第3 セグメントに格納する。 これらの命令において、乗算時にいくつかの最下位ビットが破棄されるように 、レジスタ内の数値をすべてビット数が同じ固定小数点数として表わしてもよい 。ほとんどすべての固定小数点数は、+1〜-1の範囲で定義することが出来る。し かしながら、回転/スケーリングの結果はこの例外であり、-2〜2の範囲の固定 小数点数が望ましい。この数値表現を使用しかつデータフロー図を前述したよう に命令に分割すると、丸めにより精度は、ほとんど失われないことが判明してい る。これらの命令における加算および/または乗算は、結果の大きさがレジスタ に保持できる値範囲を超える場合には、命令の結果のクリッピングを提供するこ とが望ましい。しかしながら、先に示したようにデータフロー図が命令に分割さ れているときは、通常、クリッピングは必要ないことが判明している。 これらの命令すべてがデータ処理装置によって提供される場合には、2つのレ ジスタR1、R2のセグメントに含まれる行の8点IDCTは、次のプログラムを使用し てプログラムできる。 INSI R1,R2,R3 INS2 R3,R4 INS5 R1,R2,R7 INS6 R7,R8 INS7 R8,R9 INS3 R4,R9,R5 INS4 R4,R9,R6 この結果として、IDCT変換の行を構成する数値は、レジスタR5、R6のセグメント に格納される。ブロック全体を変換するためには、必要となる他のレジスタを使 用して、これらの命令を他の行についても繰り返す必要がある。また言うまでも ないが、2つ以上の機能単位を有するVLIWプロセッサの場合、命令INSI-INS7す べてを1つの同じ機能単位に対する命令とすることが出来るが、これらの命令IN S1-INS7を複数の機能単位によって実行させることもできる。例えば、乗算を行 う命令のための機能単位と、加算と減算のみを行う命令のための機能単位をそれ ぞれ用意することもできる。 命令への演算のグループ分けを再編成することも可能である。例えば、INS1R1 ,R2,X;INS2 X,R4の順次実行とINSA R1,R2,R4の実行とが機能的に等価となるよう に、INS1とINS2の演算を1つの命令INSAに結合することができる。同様に、INS5 R1,R2,X;INS6 X,Y;INS7 Y,R9の順次実行とINSB R1,R2,R9の実行とが等価となる ように、INS5、INS6、INS7を1つの命令に結合することができる。また演算の結 果を逆の順序で結果レジスタのセグメントに格納するように命令INS7を修正する ことにより、INS3とINS4をそれぞれSIMD加算、SIMD減算に置き換えることができ る。しかしながらこの場合、セグメント0-3の内容を互いに交換し、セグメント1 -2の内容を互いに交換する追加の「逆順」命令が必要になる。この命令は、変換 後の数値が正しい順序で得られるようにTNS4のSIMDバージョンの結果に適用する 必要がある。 ブロックを変換するために実行する必要のある命令の数は、命令INS1-INS7を 受け取って演算を並列に実行し、命令内で参照される1つまたは複数のオペラン ド内の相異なるセグメントを組み合わせる1つまたは複数の機能単位を提供する ことにより減らすことができる。これにより変換に必要な時間(命令サイクルの 数)が短縮される。このような機能単位によるIDCTの実行は、個々の命令による 実行よりもはるかに高速である。その理由は、少なくとも、オペランド内の異な る位置のセグメントに格納されている数値の組み合わせを機能単位内の配線によ って実現できることにある。この配線はIDCTに固有なものである。もちろん、追 加命令INS1-1NS7のうちの1つ、またはこれらの命令の任意の組み合わせが機能 単位によって提供されている場合には、実行時間の短縮はすでに達成されている 。これらの命令のうち提供されていない命令が1つ以上あるときは、それらの機 能は従来の命令を使用して実行できる。 さらに、プログラムを格納するのに必要なメモリ空間も減少し、これは特に、 変換が行われるプログラムで顕著である。当然ながらこの利点は、命令の中の演 算が並列に実行されない場合にも得られる。どのような組み合わせの命令に対し てもプログラム空間は減少するであろう。しかしながら、INS1-INS7の組み合わ せは任意ではなく、それらは、IDCTの計算に必要なセグメントを組み合わせて処 理速度を高めるための演算と、さらに並列に実行できる演算を組み合わせてIDCT の計算速度をさらに高めるための演算とを提供する特殊な特性を持つ。 先に示した例は、8点2次元IDCTを実行するのに4つのセグメントをもつレジ スタ、例えば、4つの16ビットセグメントをもつ64ビットのレジスタを使用して いる。当然ながら、本発明は、これらの数値に限定されるものではない。これ以 外のサイズのセグメント(例:8ビット、12ビット、32ビットのセグメント)および /またはこれ以外のビット数のレジスタ(例:128ビット)も使用できる。16ビッ ドセグメントの128ビットレジスタを使用する場合、8つの数値を格納でき、例 えば、8点IDCTおよび8ビットブロックの行全体を、1つのレジスタと1つの結 果レジスタのみの1つの命令として実行できる。 より一般的には、レジスタ内の異なる位置のセグメントに格納されているオペ ランドを組み合わせる演算を実行する(並列実行が望ましい)専用命令を実行でき る機能単位を提供することにより、如何なる種類のプログラムの速度も高めるこ とができる。前述した分離可能な変換は、その一例である。1つのプログラムが 与えられたとき、そのプログラムのデータフローを分析し、同じオペランドまた は2つのオペランド内の異なるセグメントを組み合わせる演算の頻度の高い組み 合わせを取り出すことにより、適切な専用命令を見出すことができる。適切な命 令が見出された場合、命令デコーダ120とスイッチ回路125は、機能単位がその命 令を扱えるように設計される。 これらの専用命令は、SIMD命令セットと組み合わせるのが望ましい。この場合 、1つまたは複数の機能単位は、協働して、またはそれぞれ個別に、(オペラン ド内の対応する位置のセグメントのペアを組み合わせて)SIMDデータフローによ る算術命令の完全なセットを提供する。さらに少なくとも1つの機能単位は、命 令の1つまたは複数のオペランド内の異なる位置のセグメントを組み合わせる2 〜3個の選択された命令を実行できる(この場合の「異なる位置」とは、SIMD命 令におけるオペレータランド内の位置と異なるという意味である)。 この方法は、IDCTのみならず、あらゆる種類の分離可能な変換に特に使用でき る。例えば、2次元フーリエ変換やHadamard変換のほか、H1(x)H2(y)と書くこと のできる(ガウスカーネルのような)2次元の分離可能なカーネルH(x,y)によるた たみこみ、あるいは3次元以上の変換やたたみこみなどに利用できる。一般に、 分離可能な変換は、入力値として一連の数値をとって出力として一連の新しい数 値を定義する1次元変換を使用する。分離可能な変換は、2つのこのような1次 元変換の合成を有する。第1の1次元変換は、一連の数値の各セットそれぞれに ついて計算され、新しい一連の数値のセットが生成される。第2の変換は、この 新しい一連の数値のセットから対応する位置の数値を連続してとることにより得 られる横方向の一連の数値について計算される。 上記それぞれの場合において、変換する必要のある数値は、オペランドのセグ メント内に格納してもよい。その場合、数値が格納されるセグメントの位置は、 数値が位置する列によって各行ごとに同じ方法で決定される(各オペランド内の 数値は同じ行に属す)。変換は、専用命令を使用して行方向に、そしてSIMD命令 によって行を横切る方向に並列に何度でも実行できる。

Claims (1)

  1. 【特許請求の範囲】 1. -オペランド内の各位置で複数のセグメントにそれぞれ分割されている、オ ペランドを格納するオペランド格納回路と、 -1つまたは複数のオペランド参照を含む命令を実行し、それぞれが、前記オ ペランド格納回路の各ソースオペランドの前記セグメントを共通に参照する、 命令実行ユニットとを有するデータ処理装置であって、当該命令が、前記命令 実行ユニットに複数の演算を並列かつ互いに独立に実行させ、各演算が、前記 1つまたは複数の各ソースオペランドからのあらかじめ決められているセグメ ントを組み合わせる、データ処理装置において、少なくとも前記演算の1つが 、前記1つまたは複数の各ソースオペランド内の相異なる位置を有するセグメ ントを組み合わせ、および/または少なくとも前記演算の1つが、前記他の演 算と異なることを特徴とするデータ処理装置。 2. 当該命令がクロス命令として参照され、前記命令実行ユニットが、複数のオ ペランド参照をさらに含む並列命令を実行するようにも構成されていて、それ ぞれが、前記オペランド格納回路内の各ソースオペランドのセグメントを共通 に参照し、当該並列命令が、前記命令実行ユニットに複数の演算を並列かつ互 いに独立に実行させ、各演算が、さらに参照される前記複数のソースオペラン ド内に互いに対応する位置を有する前記ソースオペランドからのあらかじめ決 められているセグメントを組み合わせる、請求項1のデータ処理装置。 3. 少なくとも行と列を有するマトリックスの列変換と行変換の合成を計算する プログラムがプログラムされていて、 -前記列変換が、それぞれ1次元列変換に従って列を変換し、前記列変換が、 前記並列命令を使用して実行され、前記複数の各オペランドが、相異なる列の 情報項目を前記列に従って各セグメントに格納し、 -前記行変換が、それぞれ1次元行変換に従って行を変換し、かつ前記行変換 が、前記クロス命令を使用して実行され、同じ行の情報項目が、前記少なくと も1つのオペランドの各セグメントに格納される、 請求項2のデータ処理装置。 4. 前記行変換と前記列変換とが、前記同じ1次元変換に対応する、請求項3の データ処理装置。 5. 前記命令によって行われる前記演算が、前記1つまたは複数のソースオペラ ンド内の2つのセグメントの合計と差の計算を含む、請求項1のデータ処理装 置。 6. 前記命令によって行われる前記演算により、前記1つまたは複数のソースオ ペランドの各セグメントに格納されている数値の(IDCTやDCTのような)ベクト ル変換の複数の成分係数が計算され、かつ前記データ処理装置が、前記命令に よって共通に参照される結果オペランドの各位置のセグメントに前記成分係数 を格納する、請求項1のデータ処理装置。 7. 前記複数のソースオペランドの前記セグメント内に格納されている前記数値 が、変換される入力ベクトルを構成し、前記入力ベクトルの前記変換の前記成 分係数が、複数の結果オペランドの前記セグメントに格納される、請求項6の データ処理装置。 8. セグメント化オペランド格納回路を有するプロセッサを使用して少なくとも 行と列を有するマトリックスを変換する方法であって、前記方法が、列変換と 行変換の合成の計算を有し、 -前記列変換が、それぞれ1次元列変換に従って列を変換し、前記列変換が、 少なくとも1つのSIMD命令を使用して実行され、前記SIMD命令が、前記SIMD命 令内で参照されるオペランド格納回路の各セグメントに格納されている前記相 異なる列の情報項目を使用して、前記プロセッサに前記相異なる列を並列に処 理させ、 -前記行変換が、それぞれ1次元の行変換に従って行を変換し、前記行変換が 、前記同じ行の情報項目に対して前記プロセッサにいくつかの演算を並列に実 行させる少なくとも1つのクロス命令を使用して実行され、前記同じ行の前記 情報項目が、前記クロス命令内で参照されるオペランド格納回路の各セグメン トに格納される、 変換方法。 9. 前記行変換と前記列変換とが、前記同じ1次元変換に対応する、請求項7の 方法。 10. 請求項7または8の前記方法を実行するコンピュータプログラムを格納す る、コンピュータによって読み取ることのできるメディア。
JP54674899A 1998-03-18 1999-02-22 マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法 Expired - Lifetime JP4158864B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP98200867 1998-03-18
EP98200867.4 1998-03-18
PCT/IB1999/000315 WO1999048025A2 (en) 1998-03-18 1999-02-22 Data processing device and method of computing the cosine transform of a matrix

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2008053652A Division JP4672744B2 (ja) 1998-03-18 2008-03-04 マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法

Publications (2)

Publication Number Publication Date
JP2002510418A true JP2002510418A (ja) 2002-04-02
JP4158864B2 JP4158864B2 (ja) 2008-10-01

Family

ID=8233481

Family Applications (3)

Application Number Title Priority Date Filing Date
JP54674899A Expired - Lifetime JP4158864B2 (ja) 1998-03-18 1999-02-22 マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法
JP2008053652A Expired - Lifetime JP4672744B2 (ja) 1998-03-18 2008-03-04 マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法
JP2009268643A Expired - Lifetime JP4778086B2 (ja) 1998-03-18 2009-11-26 マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2008053652A Expired - Lifetime JP4672744B2 (ja) 1998-03-18 2008-03-04 マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法
JP2009268643A Expired - Lifetime JP4778086B2 (ja) 1998-03-18 2009-11-26 マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法

Country Status (5)

Country Link
US (3) US6397235B1 (ja)
EP (2) EP3073388A1 (ja)
JP (3) JP4158864B2 (ja)
KR (1) KR100538605B1 (ja)
WO (1) WO1999048025A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008071130A (ja) * 2006-09-14 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ
JP2008519349A (ja) * 2004-11-03 2008-06-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Simd命令をサポートするプログラマブルデータ処理回路
JP2008171448A (ja) * 1998-03-18 2008-07-24 Koninkl Philips Electronics Nv マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法
JP2009516238A (ja) * 2005-10-05 2009-04-16 クゥアルコム・インコーポレイテッド Vliwアーキテクチャを有する他のdspのための高速dctアルゴリズム
JP2014241585A (ja) * 2013-05-07 2014-12-25 エイアールエム リミテッド ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
US6625721B1 (en) * 1999-07-26 2003-09-23 Intel Corporation Registers for 2-D matrix processing
US7124160B2 (en) * 2000-03-08 2006-10-17 Sun Microsystems, Inc. Processing architecture having parallel arithmetic capability
US6742010B1 (en) * 2000-07-10 2004-05-25 Advanced Micro Devices, Inc. Dual-block discrete consine transform method
US6832232B1 (en) * 2000-07-10 2004-12-14 Advanced Micro Devices, Inc. Dual-block inverse discrete cosine transform method
US6973469B1 (en) 2001-02-01 2005-12-06 Advanced Micro Devices, Inc. Two-dimensional discrete cosine transform using SIMD instructions
US20030228068A1 (en) * 2002-06-11 2003-12-11 General Electric Company Progressive transmission and reception of image data using modified hadamard transform
US7293801B2 (en) 2003-08-18 2007-11-13 Invacare Corporation Self-stabilizing suspension for wheeled vehicles
TWI224931B (en) * 2003-07-04 2004-12-01 Mediatek Inc Scalable system for inverse discrete cosine transform and method thereof
US7814297B2 (en) * 2005-07-26 2010-10-12 Arm Limited Algebraic single instruction multiple data processing
US8255445B2 (en) * 2007-10-30 2012-08-28 The Chinese University Of Hong Kong Processes and apparatus for deriving order-16 integer transforms
DE102008008639B4 (de) 2008-02-12 2010-03-11 Micronas Gmbh Anordnung zur inversen diskreten Cosinustransformation
US8102918B2 (en) 2008-04-15 2012-01-24 The Chinese University Of Hong Kong Generation of an order-2N transform from an order-N transform
US8175165B2 (en) * 2008-04-15 2012-05-08 The Chinese University Of Hong Kong Methods and apparatus for deriving an order-16 integer transform
JP5752686B2 (ja) 2009-08-20 2015-07-22 ラムバス・インコーポレーテッド 原子メモリ装置
JP5779318B2 (ja) 2009-08-31 2015-09-16 ユー・ディー・シー アイルランド リミテッド 有機電界発光素子
KR101202481B1 (ko) * 2010-10-12 2012-11-16 성균관대학교산학협력단 에스아이엠디 씨피유 아키텍쳐를 활용한 레코드 스캔 방법 및 이러한 방법을 사용하는 장치
FR3010556A1 (fr) * 2013-09-09 2015-03-13 Commissariat Energie Atomique Processeur de traitement de donnees numeriques a operateur papillon configurable entre un calcul de fft/ifft et un decodage canal et dispositif de telecommunication correspondant
US11403254B2 (en) * 2018-08-16 2022-08-02 Tachyum Ltd. System and method for populating multiple instruction words
US11941397B1 (en) * 2022-05-31 2024-03-26 Amazon Technologies, Inc. Machine instructions for decoding acceleration including fuse input instructions to fuse multiple JPEG data blocks together to take advantage of a full SIMD width of a processor

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4689762A (en) 1984-09-10 1987-08-25 Sanders Associates, Inc. Dynamically configurable fast Fourier transform butterfly circuit
JPS63118842A (ja) * 1986-11-06 1988-05-23 Nec Corp 演算装置の故障検出方式
EP0360527B1 (en) 1988-09-19 1995-01-04 Fujitsu Limited Parallel computer system using a SIMD method
EP0424618A3 (en) 1989-10-24 1992-11-19 International Business Machines Corporation Input/output system
JPH03149348A (ja) 1989-11-07 1991-06-25 Yanmar Diesel Engine Co Ltd 自動デコンプ装置
DE69031865T2 (de) 1990-02-28 1998-08-06 Texas Instruments Inc Ein SIMD-Prozessor als digitales Filter
US5966528A (en) 1990-11-13 1999-10-12 International Business Machines Corporation SIMD/MIMD array processor with vector processing
US5708836A (en) 1990-11-13 1998-01-13 International Business Machines Corporation SIMD/MIMD inter-processor communication
EP0485690B1 (en) 1990-11-13 1999-05-26 International Business Machines Corporation Parallel associative processor system
US5734921A (en) 1990-11-13 1998-03-31 International Business Machines Corporation Advanced parallel array processor computer package
US5588152A (en) 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
US5590345A (en) 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
JPH04242827A (ja) * 1990-12-28 1992-08-31 Fujitsu Ltd 超並列計算機用乱数発生方式
US5361367A (en) 1991-06-10 1994-11-01 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Highly parallel reconfigurable computer architecture for robotic computation having plural processor cells each having right and left ensembles of plural processors
US5404550A (en) * 1991-07-25 1995-04-04 Tandem Computers Incorporated Method and apparatus for executing tasks by following a linked list of memory packets
US5734877A (en) 1992-09-09 1998-03-31 Silicon Graphics, Inc. Processor chip having on-chip circuitry for generating a programmable external clock signal and for controlling data patterns
US5450603A (en) 1992-12-18 1995-09-12 Xerox Corporation SIMD architecture with transfer register or value source circuitry connected to bus
JP3546437B2 (ja) * 1993-03-31 2004-07-28 ソニー株式会社 適応形ビデオ信号演算処理装置
US5487133A (en) * 1993-07-01 1996-01-23 Intel Corporation Distance calculating neural network classifier chip and system
JP3199205B2 (ja) 1993-11-19 2001-08-13 株式会社日立製作所 並列演算装置
DE69428466T2 (de) 1993-11-23 2002-05-23 Hewlett Packard Co Parallele Datenverarbeitung in einem Einzelprozessor
US5539663A (en) 1993-11-24 1996-07-23 Intel Corporation Process, apparatus and system for encoding and decoding video signals using temporal filtering
US5493514A (en) 1993-11-24 1996-02-20 Intel Corporation Process, apparatus, and system for encoding and decoding video signals
US5488570A (en) 1993-11-24 1996-01-30 Intel Corporation Encoding and decoding video signals using adaptive filter switching criteria
US5532940A (en) 1993-11-24 1996-07-02 Intel Corporation Process, apparatus and system for selecting quantization levels for encoding video signals
US5493513A (en) 1993-11-24 1996-02-20 Intel Corporation Process, apparatus and system for encoding video signals using motion estimation
US5559722A (en) 1993-11-24 1996-09-24 Intel Corporation Process, apparatus and system for transforming signals using pseudo-SIMD processing
US5537338A (en) 1993-11-24 1996-07-16 Intel Corporation Process and apparatus for bitwise tracking in a byte-based computer system
US5528238A (en) 1993-11-24 1996-06-18 Intel Corporation Process, apparatus and system for decoding variable-length encoded signals
US5638068A (en) * 1993-11-24 1997-06-10 Intel Corporation Processing images using two-dimensional forward transforms
US5539662A (en) 1993-11-24 1996-07-23 Intel Corporation Process, apparatus and system for transforming signals using strength-reduced transforms
US6067613A (en) 1993-11-30 2000-05-23 Texas Instruments Incorporated Rotation register for orthogonal data transformation
US6058473A (en) 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
US6116768A (en) 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
US5509129A (en) 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5630083A (en) * 1994-03-01 1997-05-13 Intel Corporation Decoder for decoding multiple instructions in parallel
US5524265A (en) 1994-03-08 1996-06-04 Texas Instruments Incorporated Architecture of transfer processor
US5734874A (en) 1994-04-29 1998-03-31 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
JPH0830577A (ja) 1994-07-15 1996-02-02 Mitsubishi Electric Corp Simdプロセッサ
US5649135A (en) * 1995-01-17 1997-07-15 International Business Machines Corporation Parallel processing system and method using surrogate instructions
JP3565613B2 (ja) 1995-03-20 2004-09-15 株式会社ルネサステクノロジ 半導体集積回路装置
US5703966A (en) * 1995-06-27 1997-12-30 Intel Corporation Block selection using motion estimation error
GB9514695D0 (en) 1995-07-18 1995-09-13 Sgs Thomson Microelectronics Combining data values
US6381690B1 (en) 1995-08-01 2002-04-30 Hewlett-Packard Company Processor for performing subword permutations and combinations
US5953241A (en) 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
WO1997008608A1 (en) 1995-08-31 1997-03-06 Intel Corporation A set of instructions for operating on packed data
US5959636A (en) * 1996-02-23 1999-09-28 Intel Corporation Method and apparatus for performing saturation instructions using saturation limit values
US5754457A (en) * 1996-03-05 1998-05-19 Intel Corporation Method for performing an inverse cosine transfer function for use with multimedia information
US5754456A (en) * 1996-03-05 1998-05-19 Intel Corporation Computer system performing an inverse cosine transfer function for use with multimedia information
US5764787A (en) 1996-03-27 1998-06-09 Intel Corporation Multi-byte processing of byte-based image data
JP3299115B2 (ja) 1996-05-16 2002-07-08 株式会社日立製作所 二重化システム
JPH09305423A (ja) * 1996-05-20 1997-11-28 Nec Corp 演算処理装置
JP3745039B2 (ja) * 1996-08-01 2006-02-15 株式会社ルネサステクノロジ 遅延命令を有するマイクロプロセッサ
JP3701401B2 (ja) * 1996-08-12 2005-09-28 株式会社ルネサステクノロジ 飽和演算命令を有するマイクロプロセッサ
US6058465A (en) 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
GB2317467B (en) 1996-09-23 2000-11-01 Advanced Risc Mach Ltd Input operand control in data processing systems
US5893145A (en) * 1996-12-02 1999-04-06 Compaq Computer Corp. System and method for routing operands within partitions of a source register to partitions within a destination register
US5909572A (en) 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
US6047366A (en) 1996-12-31 2000-04-04 Texas Instruments Incorporated Single-instruction multiple-data processor with input and output registers having a sequential location skip function
JP3129398B2 (ja) * 1997-01-08 2001-01-29 日本電気株式会社 8点×8点2次元逆離散コサイン変換回路およびそれを実現するマイクロプロセッサ
JPH10283343A (ja) * 1997-04-02 1998-10-23 Mitsubishi Electric Corp データ処理方法
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6044448A (en) 1997-12-16 2000-03-28 S3 Incorporated Processor having multiple datapath instances
US5991787A (en) 1997-12-31 1999-11-23 Intel Corporation Reducing peak spectral error in inverse Fast Fourier Transform using MMX™ technology
EP3073388A1 (en) * 1998-03-18 2016-09-28 Koninklijke Philips N.V. Data processing device and method of computing the cosine transform of a matrix
US6175892B1 (en) 1998-06-19 2001-01-16 Hitachi America. Ltd. Registers and methods for accessing registers for use in a single instruction multiple data system
US6735690B1 (en) * 1999-06-21 2004-05-11 Pts Corporation Specifying different type generalized event and action pair in a processor
US6922472B2 (en) * 2000-05-05 2005-07-26 Teleputers, Llc Method and system for performing permutations using permutation instructions based on butterfly networks
JP4497142B2 (ja) 2006-08-28 2010-07-07 Tdk株式会社 Ptc素子および電池保護システム
JP5175485B2 (ja) 2007-03-30 2013-04-03 光洋サーモシステム株式会社 加熱炉の内部圧力制御方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008171448A (ja) * 1998-03-18 2008-07-24 Koninkl Philips Electronics Nv マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法
JP4672744B2 (ja) * 1998-03-18 2011-04-20 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法
JP2008519349A (ja) * 2004-11-03 2008-06-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Simd命令をサポートするプログラマブルデータ処理回路
US8856494B2 (en) 2004-11-03 2014-10-07 Intel Corporation SIMD processor for performing data filtering and/or interpolation
JP2009516238A (ja) * 2005-10-05 2009-04-16 クゥアルコム・インコーポレイテッド Vliwアーキテクチャを有する他のdspのための高速dctアルゴリズム
JP4801163B2 (ja) * 2005-10-05 2011-10-26 クゥアルコム・インコーポレイテッド Vliwアーキテクチャを有する他のdspのための高速dctアルゴリズム
US8396916B2 (en) 2005-10-05 2013-03-12 Qualcomm, Incorporated Fast DCT algorithm for DSP with VLIW architecture
JP2008071130A (ja) * 2006-09-14 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ
JP2014241585A (ja) * 2013-05-07 2014-12-25 エイアールエム リミテッド ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法

Also Published As

Publication number Publication date
KR100538605B1 (ko) 2005-12-22
JP4672744B2 (ja) 2011-04-20
KR20010012703A (ko) 2001-02-26
WO1999048025A3 (en) 1999-11-04
JP2010079922A (ja) 2010-04-08
US6397235B1 (en) 2002-05-28
WO1999048025A2 (en) 1999-09-23
JP2008171448A (ja) 2008-07-24
EP0983557A2 (en) 2000-03-08
JP4158864B2 (ja) 2008-10-01
JP4778086B2 (ja) 2011-09-21
US20180129631A1 (en) 2018-05-10
EP0983557B1 (en) 2019-10-02
EP3073388A1 (en) 2016-09-28
USRE46712E1 (en) 2018-02-13

Similar Documents

Publication Publication Date Title
JP4778086B2 (ja) マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法
KR101202445B1 (ko) 프로세서
US7395298B2 (en) Method and apparatus for performing multiply-add operations on packed data
US7430578B2 (en) Method and apparatus for performing multiply-add operations on packed byte data
JPH0863353A (ja) 掛け算累算命令を使用したデータ処理
IL123241A (en) Apparatus for performing multiply-add operations on packed data
KR102586259B1 (ko) 레지스터 기반의 복소수 처리
KR102649933B1 (ko) 벡터 자리올림이 있는 가산 명령
JP2007004542A (ja) 半導体信号処理装置
JP2010524080A (ja) 複数のコンピュータ・プロセッサを用いる畳み込み計算システム
EP1936492A1 (en) SIMD processor with reduction unit
JP3709291B2 (ja) 高速複素フーリエ変換方法及び装置
JP2001084242A (ja) 可変演算プロセッサ
WO2008124061A1 (en) System for convolution calculation with multiple computer processors
WO2008077803A1 (en) Simd processor with reduction unit
JP3970442B2 (ja) 離散コサイン変換装置及び逆離散コサイン変換装置
Mélès Computing Tools and Representations of Arithmetic
CA2339919A1 (en) A method and system for processing matrices of complex numbers
Chen et al. Intel Corporation, Santa Clara, California
GB2283592A (en) Computational structures for the frequency-domain analysis of signals and systems
JPH08137833A (ja) 離散コサイン変換装置および逆離散コサイン変換装置
KR20020021078A (ko) 데이터 처리 시스템 및 복수의 부호 데이터 값의 산술연산 수행방법
JPH03119420A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060118

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20060328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070904

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070823

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071204

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080304

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080610

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080709

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110725

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120725

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130725

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term