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

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

Info

Publication number
JP2010079922A
JP2010079922A JP2009268643A JP2009268643A JP2010079922A JP 2010079922 A JP2010079922 A JP 2010079922A JP 2009268643 A JP2009268643 A JP 2009268643A JP 2009268643 A JP2009268643 A JP 2009268643A JP 2010079922 A JP2010079922 A JP 2010079922A
Authority
JP
Japan
Prior art keywords
instruction
segment
register
operand
row
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
JP2009268643A
Other languages
English (en)
Other versions
JP4778086B2 (ja
Inventor
Eijndhoven Josephus T J Van
エイントホーベン ヨゼフス ティー ジェー ファン
Fransiscus W Sijstermans
フランシスカス ダブリュ スェスターマンス
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
Koninklijke 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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of JP2010079922A publication Critical patent/JP2010079922A/ja
Application granted granted Critical
Publication of JP4778086B2 publication Critical patent/JP4778086B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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)

Abstract

【課題】実行する必要のある命令の数をさらに減らすことができる処理装置を提供する。
【解決手段】SIMD方式で演算を適用できる数値を含むセグメントとしてフォーマットできるレジスタ用のデータ処理装置。さらに、レジスタ内のセグメントの少なくとも1つが、2つ以上の演算で使用されることが可能である。2次元変換において、列変換を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に格納されている数値に加算され、それと並列に、ビット位置32-47に格納されている数値が、ビット位置48-63に格納されている数値に加算される。
同一オペランドレジスタ内のセグメントを組み合わせる演算と、異なるオペランドレジスタ内のセグメントを組み合わせる演算の両方に対する命令を提供することができる。1つまたは複数の如何なるセグメントも、2つ以上の演算で使用することができる。並列に実行される演算は、すべて同じタイプの演算(例:すべて加算)でも良いし、相異なる演算(例:加算と減算)でも良い。
通常、SIMD命令以外には、セグメントを組み合わせるアプリケーション固有命令は、ごく限られた命令セットしか提供されないであろう。例えば、相異なる位置の特定のセグメント間での加算などの演算を行う命令が利用可能なとき、可能なセグメントペアすべての間にその演算をプログラムする命令セットを用意する必要はない。同様に、(少なくとも演算の1つが他の演算と異なる)いくつかのあるセグメントペアをそれ自身の演算に組み合わせる命令が利用可能なとき、それらのセグメントに適用される演算の可能な組み合わせすべてについて命令セットを用意する必要はない。如何なるアプリケーションに対しても、可能な演算すべてまたは可能な演算の組み合わせすべてのうちのごく一部、および/またはセグメントの可能な組み合わせすべてのうちのごく一部しか必要とされない。
ブロックについての分離可能な2次元変換に対しては、本発明は、ブロックの置き換えなしに必要な命令の数を減らすことを可能にする。各レジスタは、1つの行からの異なるピクセル値を含み、かつ別のレジスタが同じ列からのピクセル値を同じセグメントに格納していてよい。列の変換は、SIMD命令を使用して実行されるであろうが、行の変換は、相異なるセグメント内の同じ行からのピクセル値を組み合わせる並列演算によって実行される。
例えば、IDCT命令の中で参照されるオペランドレジスタの異なるセグメントに格納されている行のピクセル値から、その行全体のIDCTを計算するIDCT命令を提供することもできる。また、レジスタ内の異なるセグメントのペアの内容の合計と差を計算する演算も用いることができる。この演算は、IDCT変換とこれに類似する変換で一般に必要となるタイプの演算である。
データ処理装置を示す。 8点1次元IDCTの実行のデータフロー図の例を示す。 本発明による命令のデータフロー図を示す。 本発明による命令を実行するための機能単位を示す。 本発明による命令を実行するための機能単位を示す。
第1図は、VLIW(Very Long Instruction Word)タイプのデータ処理装置を示す。本発明は、VLIWタイプの装置を用いて図示されているが、このタイプの装置に限定されるものではない。この装置は、命令発行ユニット10、多数の機能単位12a-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は、すべて同じタイプの演算(例:加算)をそれぞれ別のセグメントに実行する。
SIMD命令は、例えば、数値Bij(i=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は次のように表わされる。

Aij = 2/N ΣuΣvCuCvBu,vcos((2i + 1)uπ/2N)cos((2j + 1)vπ/2N)

ここで、u = 0の場合Cu = 1/sqrt(2)、それ以外ではCu = 1であり、かつ0からN-1までの整数について合計が実行される。この2次元変換は、最初に、

INTiv = ΣuCuBu,vcos((2i + 1)uπ/2N)

という1次元変換によって中間ブロックINTivを得、 次いでこの中間ブロックに次の1次元変換

Aij = 2/NΣvCvINTi,vcos((2j + 1)vπ/2N)

を適用することにより計算できる。
従って、この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レジスタのセグメントにINTi,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つの列のいくつかの数値INTi,v(i = 0..3 v = 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. Loeffler、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の第1セグメントの差、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番目の命令INS3 R4,R5,R6は、オペランドとして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番目の命令INS7 R8,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は、次のプログラムを使用してプログラムできる。

INS1 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プロセッサの場合、命令INS1-INS7すべてを1つの同じ機能単位に対する命令とすることが出来るが、これらの命令INS1-INS7を複数の機能単位によって実行させることもできる。例えば、乗算を行う命令のための機能単位と、加算と減算のみを行う命令のための機能単位をそれぞれ用意することもできる。
命令への演算のグループ分けを再編成することも可能である。例えば、INS1 R1,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の内容を互いに交換する追加の「逆順」命令が必要になる。この命令は、変換後の数値が正しい順序で得られるようにINS4のSIMDバージョンの結果に適用する必要がある。
ブロックを変換するために実行する必要のある命令の数は、命令INS1-INS7を受け取って演算を並列に実行し、命令内で参照される1つまたは複数のオペランド内の相異なるセグメントを組み合わせる1つまたは複数の機能単位を提供することにより減らすことができる。これにより変換に必要な時間(命令サイクルの数)が短縮される。このような機能単位によるIDCTの実行は、個々の命令による実行よりもはるかに高速である。その理由は、少なくとも、オペランド内の異なる位置のセグメントに格納されている数値の組み合わせを機能単位内の配線によって実現できることにある。この配線はIDCTに固有なものである。もちろん、追加命令INS1-INS7のうちの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命令によって行を横切る方向に並列に何度でも実行できる。
10:命令発行ユニット
12a−c:機能単位
14:レジスタファイル
20:機能単位
24a,b:演算装置
25a,b:演算装置
26:出力セクション
28:命令デコーダ
30a−h:ノード
32a−h:ノード
40:機能単位
42:入力セクション
44a−c:演算回路
46:入力セクション
48:命令デコーダ
49:出力セクション
120:命令デコーダ
122a−d:ALU
124a,b:入力レジスタ
126:出力レジスタ

Claims (11)

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

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP98200867.4 1998-03-18
EP98200867 1998-03-18

Related Parent 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
JP2010079922A true JP2010079922A (ja) 2010-04-08
JP4778086B2 JP4778086B2 (ja) 2011-09-21

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 Before (2)

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

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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011024976A1 (ja) 2009-08-31 2011-03-03 富士フイルム株式会社 有機電界発光素子

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
KR101239304B1 (ko) * 2004-11-03 2013-03-05 실리콘 하이브 비.브이. Simd 명령을 지원하는 프로그램 가능한 데이터 처리회로
US7814297B2 (en) * 2005-07-26 2010-10-12 Arm Limited Algebraic single instruction multiple data processing
US7725516B2 (en) * 2005-10-05 2010-05-25 Qualcomm Incorporated Fast DCT algorithm for DSP with VLIW architecture
JP2008071130A (ja) * 2006-09-14 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ
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
EP2467852B1 (en) 2009-08-20 2019-05-22 Rambus Inc. Atomic memory device
KR101202481B1 (ko) * 2010-10-12 2012-11-16 성균관대학교산학협력단 에스아이엠디 씨피유 아키텍쳐를 활용한 레코드 스캔 방법 및 이러한 방법을 사용하는 장치
GB2514099B (en) * 2013-05-07 2020-09-09 Advanced Risc Mach Ltd A data processing apparatus and method for performing a transform between spatial and frequency domains when processing video data
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
US11144497B2 (en) * 2018-08-16 2021-10-12 Tachyum Ltd. System and method of populating an instruction word
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

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63118842A (ja) * 1986-11-06 1988-05-23 Nec Corp 演算装置の故障検出方式
JPH04242827A (ja) * 1990-12-28 1992-08-31 Fujitsu Ltd 超並列計算機用乱数発生方式
JPH07141304A (ja) * 1993-11-19 1995-06-02 Hitachi Ltd メモリアレーを用いた並列演算装置
JPH08249293A (ja) * 1995-01-17 1996-09-27 Internatl Business Mach Corp <Ibm> 代理命令を用いる並列処理システム及び方法
US5638068A (en) * 1993-11-24 1997-06-10 Intel Corporation Processing images using two-dimensional forward transforms
JPH09305423A (ja) * 1996-05-20 1997-11-28 Nec Corp 演算処理装置

Family Cites Families (65)

* 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
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
US5734921A (en) 1990-11-13 1998-03-31 International Business Machines Corporation Advanced parallel array processor computer package
US5752067A (en) 1990-11-13 1998-05-12 International Business Machines Corporation Fully scalable parallel processing system having asynchronous SIMD processing
US5966528A (en) 1990-11-13 1999-10-12 International Business Machines Corporation SIMD/MIMD array processor with vector processing
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
EP0485690B1 (en) 1990-11-13 1999-05-26 International Business Machines Corporation Parallel associative processor system
US5590345A (en) 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5588152A (en) 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
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
EP0924601B1 (en) 1993-11-23 2001-09-26 Hewlett-Packard Company, A Delaware Corporation Parallel data processing in a single processor
US5537338A (en) 1993-11-24 1996-07-16 Intel Corporation Process and apparatus for bitwise tracking in a byte-based computer system
US5559722A (en) 1993-11-24 1996-09-24 Intel Corporation Process, apparatus and system for transforming signals using pseudo-SIMD processing
US5493513A (en) 1993-11-24 1996-02-20 Intel Corporation Process, apparatus and system for encoding video signals using motion estimation
US5508942A (en) 1993-11-24 1996-04-16 Intel Corporation Intra/inter decision rules for encoding and decoding video signals
US5528238A (en) 1993-11-24 1996-06-18 Intel Corporation Process, apparatus and system for decoding variable-length encoded signals
US5532940A (en) 1993-11-24 1996-07-02 Intel Corporation Process, apparatus and system for selecting quantization levels for encoding video signals
US5539662A (en) 1993-11-24 1996-07-23 Intel Corporation Process, apparatus and system for transforming signals using strength-reduced transforms
US5493514A (en) 1993-11-24 1996-02-20 Intel Corporation Process, apparatus, and system for encoding and decoding video signals
US5539663A (en) 1993-11-24 1996-07-23 Intel Corporation Process, apparatus and system for encoding and decoding video signals using temporal filtering
US6067613A (en) 1993-11-30 2000-05-23 Texas Instruments Incorporated Rotation register for orthogonal data transformation
US5509129A (en) 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US6116768A (en) 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
US6058473A (en) 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
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プロセッサ
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
AU6677896A (en) 1995-08-31 1997-03-19 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
US5754456A (en) * 1996-03-05 1998-05-19 Intel Corporation Computer system performing an inverse cosine transfer function for use with multimedia information
US5754457A (en) * 1996-03-05 1998-05-19 Intel Corporation Method for 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 株式会社日立製作所 二重化システム
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 光洋サーモシステム株式会社 加熱炉の内部圧力制御方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63118842A (ja) * 1986-11-06 1988-05-23 Nec Corp 演算装置の故障検出方式
JPH04242827A (ja) * 1990-12-28 1992-08-31 Fujitsu Ltd 超並列計算機用乱数発生方式
JPH07141304A (ja) * 1993-11-19 1995-06-02 Hitachi Ltd メモリアレーを用いた並列演算装置
US5638068A (en) * 1993-11-24 1997-06-10 Intel Corporation Processing images using two-dimensional forward transforms
JPH08249293A (ja) * 1995-01-17 1996-09-27 Internatl Business Mach Corp <Ibm> 代理命令を用いる並列処理システム及び方法
JPH09305423A (ja) * 1996-05-20 1997-11-28 Nec Corp 演算処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011024976A1 (ja) 2009-08-31 2011-03-03 富士フイルム株式会社 有機電界発光素子

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4778086B2 (ja) マトリックスのコサイン変換を計算するためのデータ処理装置およびその方法
KR101202445B1 (ko) 프로세서
CN102707922B (zh) 控制移位分组数据的位校正的装置
US6901422B1 (en) Matrix multiplication in a vector processing system
CN111465924A (zh) 用于将矩阵输入转换为矩阵处理器的向量化输入的系统和方法
WO2007012794A2 (en) Algebraic single instruction multiple data processing
CN111353126A (zh) 分块矩阵乘法运算系统
JPH0863353A (ja) 掛け算累算命令を使用したデータ処理
IL123241A (en) Apparatus for performing multiply-add operations on packed data
JPH02504682A (ja) 変換処理回路
KR102649933B1 (ko) 벡터 자리올림이 있는 가산 명령
JP2007004542A (ja) 半導体信号処理装置
US20080250092A1 (en) System for convolution calculation with multiple computer processors
KR102586259B1 (ko) 레지스터 기반의 복소수 처리
JPH0345420B2 (ja)
WO2008124061A1 (en) System for convolution calculation with multiple computer processors
WO2008077803A1 (en) Simd processor with reduction unit
JPH1063647A (ja) 行列演算装置
CA2339919A1 (en) A method and system for processing matrices of complex numbers
GB2283592A (en) Computational structures for the frequency-domain analysis of signals and systems

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100727

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101027

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110513

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: 20110531

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: 20110630

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: 20140708

Year of fee payment: 3

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