JP2006107463A - パック・データの乗加算演算を実行する装置 - Google Patents
パック・データの乗加算演算を実行する装置 Download PDFInfo
- Publication number
- JP2006107463A JP2006107463A JP2005248479A JP2005248479A JP2006107463A JP 2006107463 A JP2006107463 A JP 2006107463A JP 2005248479 A JP2005248479 A JP 2005248479A JP 2005248479 A JP2005248479 A JP 2005248479A JP 2006107463 A JP2006107463 A JP 2006107463A
- Authority
- JP
- Japan
- Prior art keywords
- data
- packed
- packed data
- result
- data elements
- 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
Links
- 238000012545 processing Methods 0.000 claims description 52
- 238000000034 method Methods 0.000 claims description 28
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000004891 communication Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 17
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 15
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 15
- 238000009825 accumulation Methods 0.000 description 9
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000001914 filtration Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 229940050561 matrix product Drugs 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5324—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
-
- 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/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
- G06F15/7857—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) using interleaved memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/4806—Computations with complex numbers
- G06F7/4812—Complex multiplication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3828—Multigauge devices, i.e. capable of handling packed numbers without unpacking them
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49921—Saturation, i.e. clipping the result to a minimum or maximum value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
- G06F7/5336—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
- G06F7/5338—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Discrete Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Electrophonic Musical Instruments (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Controls And Circuits For Display Device (AREA)
- Holo Graphy (AREA)
- Hair Curling (AREA)
Abstract
【解決手段】乗加算回路が、第1(810)、第2(811)、第3(812)、および第4の乗算器(813)を含み、各乗算器が、対応する前記データ要素セットを受け取る。乗加算回路はさらに、第1および第2の乗算器(810、811)に結合した第1の加算器(850)、および第3および第4の乗算器(812、813)に結合した第2の加算器(851)を含む。第3の記憶領域(871)が加算器(850、851)に結合される。第3の記憶領域(871)は、第1および第2の加算器(850、851)の出力を、第3のパック・データの第1および第2のデータ要素としてそれぞれ保存する第1および第2のフィールドを含む。
【選択図】図8
Description
この乗累算命令は、常に累算値に加算されるので、その汎用性には限界がある。そのため、乗累算以外の演算にこの命令を使用することは難しい。例えば、マルチメディア・アプリケーションでは、複素数の乗算がよく使用される。2つの複素数(例えば、r1i1およびr2i2)の乗算は、次式に従って実行される。
実数部=r1・r2‐i1・i2
虚数部=r1・i2+r2・i1
このDSPは、1つの乗累算命令で、2つの複素数を乗算する関数を実行することができない。
Ando他はまた、この高価な相互接続に代わるものは、乗算すべき後続のデータ対それぞれに遅延を与えることであると記載している。この解決策は、第1表に示した解決策が提供する性能上の利点を減少させる。
さらに、マルチポート・メモリまたはパイプライン・メモリ・アクセスの概念は複数アドレスの使用を必然的に伴う。1データ1アドレスの明示的な使用が、重要なパック・データの概念がこの技術に用いられないことを明白に示している。
本発明の実施形態の説明を理解する基礎として、以下の定義を示す。
ビットX〜ビットY: 2進数のサブフィールドを定義する。例えば、バイト001110102 (2進法)のビット6〜ビット0は、サブフィールド1110102 を表す。2進数の後の数字「2」は2進法を表す。したがって、10002は、810に等しく、F16は1510に等しい。
Rx: レジスタである。レジスタとは、データを記憶し、供給することのできる一切の装置を指す。レジスタの他の機能は後に説明する。処理装置と同じダイまたは同じパッケージにレジスタが含まれている必要は必ずしもない。
SRC1、SRC2、DEST: 記憶領域(メモリ・アドレス、レジスタなど)の識別に用いる。
ソース1‐i、結果1‐i: データを表す。
この出願には、処理装置中にあって、パック・データの乗加算演算を実行する装置を記載する。一実施形態においては、下記の第3a表および第3b表に示すように、単一の乗加算命令を使用して2つの乗加算演算が実行される。第3a表は、開示の乗加算演算を単純化して示したものであり、第3b表は、開示の乗加算演算のビット・レベルでの例を示すものである。
第1図に、本発明の一実施形態に基づいた例示的なコンピュータ・システム100を示す。コンピュータ・システム100は、情報を受け渡しするバス101または、その他の通信ハードウェアおよびソフトウェア、およびバス101に結合し、情報を処理する処理装置109を含む。処理装置109は、CISCまたはRISC型アーキテクチャを含むあらゆる種類、アーキテクチャの中央処理装置を代表する。コンピュータ・システム100はさらに、バス101に結合し、処理装置109が実行する情報および命令を記憶するランダム・アクセス・メモリ(RAM)またはその他の動的記憶装置(主記憶104と称する)を含む。主記憶104は、処理装置109による命令の実行中に、一時変数またはその他の中間情報を記憶するためにも使用することができる。コンピュータ・システム100はさらに、バス101に結合され、処理装置109のための静的情報および命令を記憶するリード・オンリー・メモリ(ROM)106および/またはその他の静的記憶装置を含む。情報および命令を記憶するデータ記憶装置107がバス101に結合される。
ステップ302で、デコーダ165は、レジスタ・ファイル150またはメモリ中の記憶場所にアクセスする。レジスタ・ファイル150中のレジスタまたはメモリ中の記憶場所へのアクセスは、制御信号が指定したレジスタ・アドレスに従って実施される。例えば、パック・データの演算に対しては、レジスタ・アドレスSRC1、SRC2およびDESTを制御信号が含む。SRC1は、第1のソース・レジスタのアドレスである。SRC2は、第2のソース・レジスタのアドレスである。全ての演算が、2つのソース・アドレスを必要とするわけではないので、いくつかの場合には、SRC2アドレスは任意となる。ある演算に、SRC2アドレスが必要ない場合には、その演算にはSRC1アドレスのみが使用される。DESTは、結果データが記憶される宛先レジスタのアドレスである。一実施形態では、SRC1またはSRC2がDESTとしても使用される。SRC1、SRC2、DESTについては、第6a図および第6b図に関してより詳細に説明する。対応するレジスタに記憶されたデータをそれぞれソース1、ソース2、結果と称する。これらのデータはそれぞれ64ビット長である。
第4図に、本発明の一実施形態に基づくパック・データのデータ型を示す。3つのパック・データ・フォーマット、すなわちパック・バイト401、パック・ワード402、パック・ダブルワード403が示されている。本発明の一実施形態では、パック・バイトは64ビット長であり、8つのデータ要素を含む。各データ要素は1バイト長である。データ要素は一般に、同じ長さのその他のデータ要素とともに単一のレジスタ(または記憶場所)に記憶される個別のデータ片である。本発明の一実施形態においては、1つのレジスタに記憶されるデータ要素の数は、データ要素のビット長で64ビットを割った数である。
パック・ダブルワード403は64ビット長で、ダブルワード403の2つのデータ要素を含む。ダブルワード403の各データ要素は32ビットの情報を含む。
パック・データを操作するのに処理装置109が使用する制御信号フォーマットの一実施形態を以下に説明する。本発明の一実施形態では、制御信号は32ビットで表される。デコーダ165はバス101から制御信号を受け取ることができる。他の実施形態では、このような制御信号をデコーダ165は、キャッシュ160から受け取ることができる。
ビット11の制御ビットT 611は演算を、飽和モード(saturate mode)で実行するかどうかを指示する。T 611が1の場合には、飽和演算(saturating operation)が実行される。T 611が0の場合には、非飽和演算(non−saturating operation)が実行される。飽和演算については後に述べる。
前述のとおり、T 611は、演算を選択的に飽和させるかどうかを指示する。 飽和イネーブル状態で演算結果がデータ範囲を、オーバーフローまたはアンダーフローする場合には、この結果はクランプされる。クランプとは、結果が、データ範囲の最大値または最小値を上まわる場合に、この結果を、最大値または最小値に設定することである。アンダーフローの場合には、飽和によって結果が、データ範囲の最小値にクランプされ、オーバーフローの場合には最大値にクランプされる。各データ・フォーマットに対する許容範囲を第4表に示す。
本発明の一実施形態では、SRC1レジスタは、パック・データ(ソース1)を、SRC2レジスタは、パック・データ(ソース2)を含み、DESTレジスタは、ソース1とソース2の乗加算演算を実行した結果を含む。乗加算演算の第1ステップでは、ソース1の各データ要素を、ソース2の対応するデータ要素と独立に掛け合わせて、中間結果セットを生成する。これらの中間結果を対で合計して、この乗加算演算の結果を生成する。
本発明の一実施形態では、符号付きパック・データに対して乗加算演算が実行され、この結果は、オーバーフローを避けるために切り捨てられる。さらに、この演算は、パック・ワード・データに対して実行され、その結果は、パック・ダブルワードにパックされる。ただし、その他の種類のパック・データに対する演算をサポートする代替実施形態も可能である。
ステップ701で、デコーダ165は、処理装置109が受け取った制御信号をデコードする。したがってデコーダ165は、乗加算演算の演算コードをデコードする。
ステップ702で、デコーダ165は、SRC1 602およびSRC2 603のアドレスが与えられているレジスタ・ファイル150内のレジスタ209に内部バス170を介してアクセスする。レジスタ209は実行ユニット130に、SRC1 602レジスタに記憶されたパック・データ(ソース1)およびSRC2 603レジスタに記憶されたパック・データ(ソース2)を供給する。すなわち、レジスタ209はパック・データを内部バス170を介して実行ユニット130に送る。
ステップ720で結果が、DESTレジスタに記憶される。
一実施形態では、アンパック・データの1回の乗算と同じクロック・サイクル数で、複数のデータ要素に対する乗加算演算を実行できる。同じクロック・サイクル数で実行するために、並列処理を使用する。すなわち、データ要素の乗加算演算を実行する命令を同時にレジスタに与える。
パック乗加算器801は以下の入力、すなわちソース1〔63:0〕入力831、ソース2〔63:0〕入力833、およびイネーブル入力880を有する。パック乗加算器801は、4つの16×16乗算回路、すなわち16×16乗算器A 810、16×16乗算器B 811、16×16乗算器C 812、および16×16乗算器D 813を有する。16×16乗算器A 810は、ソース1〔15:0〕およびソース2〔15:O〕をその入力とする。16×16乗算器B 811は、ソース1〔31:16〕およびソース2〔31:16〕をその入力とする。16×16乗算器C 812は、ソース1〔47:32〕およびソース2〔47:32〕をその入力とする。16×16乗算器D 813は、ソース1〔63:48〕およびソース2〔63:48〕をその入力とする。16×16乗算器A 810および16×16乗算器B 811によって生成された32ビットの中間結果は加算器850が受け取り、16×16乗算器C 812および16×16乗算器D 813によって生成された32ビットの中間結果は加算器851が受け取る。
第1表に関して記載した従来技術のDSP処理装置を使用して、この乗加算命令と等価の演算を実行するには、累算値をゼロにする1つの命令および4つの乗累算命令が必要である。第2表に関して記載した従来技術のDSP処理装置を使用して、この乗加算命令と等価の演算を実行するには、累算値をゼロにする1つの命令および2つの乗累算命令が必要である。
一般的な2ビット・ブース・エンコーダは5つの出力を有する。これらはそれぞれ、ゼロ、プラス1、プラス2、マイナス1、マイナス2演算用のものである。その真理値表を下記の第6表に示す。
第6表に示すように、yk+1、yk、およびyk‐1は、上位から降順に並べた乗数の隣接するビットである。下記の第7表にさらに、ブース・エンコーダの出力に基づく部分積の形態を記載する。
部分積が全て選択されると、部分積の加算が開始される。ウォレス・ツリーは、全加算器および半加算器から形成される。第9a図ないし第9e図に、乗加算ユニット145内の4つの16ビット乗算器のそれぞれで実現され、本発明の一実施形態のために部分積の合計および減数を実行するウォレス・ツリーを示す。図示のように、8つの部分積は6つの部分積に減数され、次いで、4つの部分積、3つの部分積、最終的に2つの部分積にまで減数される。
第10a図ないし第10f図に、第9a図ないし第9e図に示したウォレス・ツリーの線図を実現する全加算器および半加算器からなる回路の一実施形態を示す。
開示の乗加算命令を使用して、単一の命令で、第10a表に示す2つの複素数の乗算を実行することができる。前述のとおり、2つの複素数(例えばr1i1およびr2i2)の乗算は次式に従って実行される。
実数部=r1・r2‐i1・i2
虚数部=r1・i2+r2・i1
1クロック・サイクルごとにこの命令が完了するようにこの命令が実施される場合には、本発明によって、2つの複素数の乗算を1クロック・サイクルごとに実行することができる。
開示の乗加算命令を、値を乗累算するのにも使用することができる。例えば、下記の第11表に示すように、それぞれ4つのデータ要素から成る2つのデータ要素セット(A1−4 およびB1−4 )の乗累算を実行することができる。一実施形態では、第6表に示した各命令が、各クロック・サイクルごとに完了するように実現される。
ドット積(内積とも言う)は、信号処理演算および行列演算に使用される。ドット積は例えば、行列の積の計算、演算のディジタル・フィルタリング(FIR、IIRフィルタリングなど)、相関シーケンスの計算などに使用される。多くの音声圧縮アルゴリズム(例えば、GSM、G.728、CELP、VSELPなど)、およびHi−Fi圧縮アルゴリズム(例えば、MPEG、サブバンド・コーディングなど)で、ディジタル・フィルタリングおよび相関計算が広範に使用されているため、ドット積の性能の向上が、これらのアルゴリズムの性能を向上させる。
長さNの2つのシーケンスAおよびBのドット積は以下のように定義される。
ドット積計算は、乗加算命令を使用して実行することができる。例えば、4つの16ビット要素を含む種類のパック・データが使用される場合には、ドット積計算は、4つの値をそれぞれが含む2つのシーケンスに対して以下のように実行される。
2)転送命令を使用して、Bシーケンスの4つの16ビット値にアクセスしソース2を生成する。
3)乗加算命令、パック加算命令、シフト命令を使用して、前述のように乗累算演算を実行する。
離散コサイン変換(DCT)は、多くの信号処理アルゴリズムに使用される周知の関数である。この変換は、ビデオ圧縮および画像圧縮アルゴリズムで特に広範に利用されている。
画像圧縮およびビデオ圧縮アルゴリズムでは、DCTを使用して画素ブロックを、空間表現から周波数表現に変換している。周波数表現では、画像情報が、重要性が異なる各種周波数成分に分割される。圧縮アルゴリズムは、復元される画像内容に影響を及ぼさないよう選択的に、周波数成分を数量化するか、または破棄する。このようにして圧縮が達成される。
X=a*x+b*y
Y=c*x‐d*y
上式において、a、b、c、およびdは係数と呼ばれるものであり、xおよびyは入力データ、XおよびYは変換出力である。
1)転送命令およびアンパック命令を使用して、xおよびyを表す2つの16ビット値にアクセスしソース1(下記第15表参照)を生成する。
2)下記第15表に示すようにソース2を生成する。なお、ソース2を、いくつかのバタフライ演算で再使用することができることに留意されたい。
3)ソース1およびソース2を使用して乗加算命令を実行し、結果を生成する(下記第15表参照)。
Claims (17)
- 第1の複数のデータ要素を有する第1のパック・データ、およびそれに対応する第2の複数のデータ要素を有する第2のパック・データを指定する命令を受け取りデコードする第1の回路と;
前記第1の回路と通信状態にあり、前記第1および第2のパック・データの前記データ要素に少なくとも1回の加算および少なくとも1回の乗算を実行することによって少なくとも1つの結果データ要素を生成する第2の回路とを備えることを特徴とする演算装置。 - 少なくとも4つのデータ要素を含む第1のパック・データ、および少なくとも4つのデータ要素を含む第2のパック・データを記憶するメモリと;
前記第1のパック・データおよび前記第2のパック・データを受け取るように前記メモリと結合し、命令の受け取りに応答して前記第1のパック・データ中および前記第2のパック・データ中のデータ要素に演算を実行して、少なくとも2つが乗加算演算の結果を含む、第3のパック・データ中の複数のデータ要素を生成する処理装置とを備えることを特徴とする演算装置。 - 前記処理装置が、前記命令のビット3から5によって指定される前記メモリのある場所に、前記第3のパック・データを記憶することを特徴とする請求項2に記載の装置。
- 前記処理装置が、前記第1のパック・データを前記第3のパック・データで上書きすることを特徴とする請求項2に記載の装置。
- 前記処理装置が、各々が乗加算演算の結果を含む、前記第3のパック・データ中の少なくとも4つのデータ要素を生成することを特徴とする請求項2に記載の装置。
- 前記処理装置が、前記第1のパック・データ中の8つのデータ要素、および前記第2のパック・データ中の8つのデータ要素に演算を実行することを特徴とする請求項5に記載の装置。
- 第1のパック・データ中の各データ要素が第2のパック・データ要素中に対応するデータ要素を有する諸データ要素をそれぞれが含む前記第1のパック・データおよび前記第2のパック・データを受け取る段階と;
前記第1のパック・データ中および前記第2のパック・データ中の前記対応するデータ要素どうしを掛け合わせて、いくつかのセットに分割された対応する中間データ要素を生成する段階と;
複数の結果データ要素の第1の要素が、前記いくつかのセットの第1のセット中の中間データ要素の合計を表し、前記複数の結果データ要素の第2の要素が、前記いくつかのセットの第2のセット中の中間データ要素の合計を表す前記複数の結果データ要素を生成する段階と;
前記複数の結果データ要素を合計せずに、単一の命令の実行を完了させる段階とを含むことを特徴とする演算方法。 - 他の命令に対するオペランドとして使用するために、前記複数の結果データ要素を第3のパック・データとして記憶する段階をさらに含むことを特徴とする請求項7に記載の方法。
- 前記第1のパック・データ上に前記複数の結果データ要素を書き込む段階をさらに含むことを特徴とする請求項7に記載の方法。
- 前記いくつかのセットの第3のセット中の中間データ要素の合計を表す前記複数の結果データ要素の第3の要素を生成する段階と;
前記いくつかのセットの第4のセット中の中間データ要素の合計を表す前記複数の結果データ要素の第4の要素を生成する段階と;
前記複数の結果データ要素を合計せずに、前記単一の命令の実行を完了させる段階とをさらに含むことを特徴とする請求項7に記載の方法。 - 第1のパック・データの各データ要素が第2のパック・データの異なるデータ要素に対応する、第1の複数のデータ要素を有する前記第1のパック・データおよび第2の複数のデータ要素を有する前記第2のパック・データの場所を指定する命令を受け取りデコードするデコーダと;
前記デコーダと通信状態にあり、前記第1および第2のパック・データの対応するデータ要素の積の合計をそれぞれが含む複数の結果データ要素を有するパック・データ結果を、前記デコーダが前記命令をデコードした後で、乗算および加算を実行することによって生成する実行ユニットとを備えることを特徴とする演算装置。 - 前記実行ユニットが、前記第1のパック・データまたは前記第2のパック・データのどちらかの上に前記パック・データ結果を記憶することを特徴とする請求項11に記載の装置。
- 前記実行ユニットが、前記第1のパック・データの前記データ要素よりも精度の高い結果データ要素を生成することを特徴とする請求項11に記載の装置。
- 前記実行ユニットが、前記複数の結果データ要素を合計せずに、前記命令の実行を完了させることを特徴とする請求項11に記載の装置。
- 前記デコーダが、命令のビット0から2までが前記第2のパック・データの場所を指定し、前記命令のビット3から5までが前記第1のパック・データの場所を指定する24ビットの命令フォーマットを有する前記命令をデコードすることを特徴とする請求項11に記載の装置。
- 第1のパック・データの各データ要素が第2のパック・データの異なるデータ要素に対応する、第1の複数のデータ要素を有する前記第1のパック・データおよび第2の複数のデータ要素を有する前記第2のパック・データの場所を指定する命令を受け取る段階と;
前記命令を実行することにより、それぞれが前記第1および第2のパック・データの対応するデータ要素の4つの積の合計を含む4つの結果データ要素を含むパック・データ結果を生成する段階とを含むことを特徴とする演算方法。 - 前記結果データ要素が32ビットのデータ要素であることを特徴とする請求項16に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/522,067 US6385634B1 (en) | 1995-08-31 | 1995-08-31 | Method for performing multiply-add operations on packed data |
US08/606,212 US6035316A (en) | 1995-08-31 | 1996-02-23 | Apparatus for performing multiply-add operations on packed data |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP51029097A Division JP3750820B2 (ja) | 1995-08-31 | 1996-08-07 | パック・データの乗加算演算を実行する装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006107463A true JP2006107463A (ja) | 2006-04-20 |
JP4064989B2 JP4064989B2 (ja) | 2008-03-19 |
Family
ID=27060694
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP51029097A Expired - Lifetime JP3750820B2 (ja) | 1995-08-31 | 1996-08-07 | パック・データの乗加算演算を実行する装置 |
JP2005248479A Expired - Lifetime JP4064989B2 (ja) | 1995-08-31 | 2005-08-29 | パック・データの乗加算演算を実行する装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP51029097A Expired - Lifetime JP3750820B2 (ja) | 1995-08-31 | 1996-08-07 | パック・データの乗加算演算を実行する装置 |
Country Status (15)
Country | Link |
---|---|
EP (1) | EP0847552B1 (ja) |
JP (2) | JP3750820B2 (ja) |
CN (2) | CN1107905C (ja) |
AU (1) | AU717246B2 (ja) |
BR (1) | BR9610285A (ja) |
CA (1) | CA2230108C (ja) |
DE (1) | DE69624578T2 (ja) |
HK (1) | HK1012513A1 (ja) |
HU (1) | HUP9900030A3 (ja) |
IL (1) | IL123241A (ja) |
MX (1) | MX9801571A (ja) |
NO (1) | NO317739B1 (ja) |
PL (1) | PL325231A1 (ja) |
RU (1) | RU2139564C1 (ja) |
WO (1) | WO1997008610A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012248208A (ja) * | 2006-12-05 | 2012-12-13 | Altera Corp | プログラマブルロジックデバイスのための大きな乗算器 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69941287D1 (de) * | 1998-01-21 | 2009-10-01 | Panasonic Corp | Verfahren und apparat für arithmetische operationen |
US7395302B2 (en) | 1998-03-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing horizontal addition and subtraction |
US7392275B2 (en) | 1998-03-31 | 2008-06-24 | Intel Corporation | Method and apparatus for performing efficient transformations with horizontal addition and subtraction |
EP1188112A2 (en) * | 1999-05-12 | 2002-03-20 | Analog Devices, Inc. | Digital signal processor computation core |
US7430578B2 (en) | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
JP4136432B2 (ja) * | 2002-04-15 | 2008-08-20 | 松下電器産業株式会社 | 図形描画装置 |
CN1310130C (zh) * | 2003-03-12 | 2007-04-11 | 中国科学院声学研究所 | 一种乘法器的重构运算方法及可重构乘法器 |
US7424501B2 (en) | 2003-06-30 | 2008-09-09 | Intel Corporation | Nonlinear filtering and deblocking applications utilizing SIMD sign and absolute value operations |
US8386553B1 (en) | 2006-12-05 | 2013-02-26 | Altera Corporation | Large multiplier for programmable logic device |
US7995845B2 (en) * | 2008-01-30 | 2011-08-09 | Qualcomm Incorporated | Digital signal pattern detection and classification using kernel fusion |
US8959137B1 (en) | 2008-02-20 | 2015-02-17 | Altera Corporation | Implementing large multipliers in a programmable integrated circuit device |
US8103858B2 (en) * | 2008-06-30 | 2012-01-24 | Intel Corporation | Efficient parallel floating point exception handling in a processor |
US8239442B2 (en) * | 2008-08-08 | 2012-08-07 | Analog Devices, Inc. | Computing module for efficient FFT and FIR hardware accelerator |
CN101706712B (zh) * | 2009-11-27 | 2011-08-31 | 北京龙芯中科技术服务中心有限公司 | 浮点向量乘加运算装置和方法 |
CN102541814B (zh) * | 2010-12-27 | 2015-10-14 | 北京国睿中数科技股份有限公司 | 用于数据通信处理器的矩阵计算装置和方法 |
US8909687B2 (en) * | 2012-01-19 | 2014-12-09 | Mediatek Singapore Pte. Ltd. | Efficient FIR filters |
DE102013209657A1 (de) * | 2013-05-24 | 2014-11-27 | Robert Bosch Gmbh | FMA-Einheit, insbesondere zur Verwendung in einer Modellberechnungseinheit zur rein hardwarebasierten Berechnung von Funktionsmodellen |
CN103677739B (zh) * | 2013-11-28 | 2016-08-17 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种可配置的乘累加运算单元及其构成的乘累加运算阵列 |
CN106030510A (zh) * | 2014-03-26 | 2016-10-12 | 英特尔公司 | 三源操作数浮点加法处理器、方法、系统和指令 |
RU2562411C1 (ru) * | 2014-12-10 | 2015-09-10 | Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Кубанский государственный технологический университет" (ФГБОУ ВПО "КубГТУ") | Устройство для вычисления модуля комплексного числа |
US10049082B2 (en) * | 2016-09-15 | 2018-08-14 | Altera Corporation | Dot product based processing elements |
RU2653310C1 (ru) * | 2017-05-24 | 2018-05-07 | федеральное государственное бюджетное образовательное учреждение высшего образования "Воронежский государственный университет" (ФГБОУ ВО "ВГУ") | Устройство для умножения числа по модулю на константу |
US10705839B2 (en) * | 2017-12-21 | 2020-07-07 | Intel Corporation | Apparatus and method for multiplying, summing, and accumulating sets of packed bytes |
CN109117114B (zh) * | 2018-08-16 | 2023-06-02 | 电子科技大学 | 一种基于查找表的低复杂度近似乘法器 |
US12164882B2 (en) * | 2020-07-14 | 2024-12-10 | Taiwan Semiconductor Manufacturing Company, Ltd. | In-memory computation circuit and method |
CN113010146B (zh) * | 2021-03-05 | 2022-02-11 | 唐山恒鼎科技有限公司 | 一种混合信号乘法器 |
CN113076083B (zh) * | 2021-06-04 | 2021-08-31 | 南京后摩智能科技有限公司 | 数据乘加运算电路 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN85107063A (zh) * | 1985-09-27 | 1987-01-31 | 耿树贵 | 整数多功能叠接单元的阵列乘法器 |
JPS6297060A (ja) * | 1985-10-23 | 1987-05-06 | Mitsubishi Electric Corp | デイジタルシグナルプロセツサ |
US4985848A (en) * | 1987-09-14 | 1991-01-15 | Visual Information Technologies, Inc. | High speed image processing system using separate data processor and address generator |
CA1311063C (en) * | 1988-12-16 | 1992-12-01 | Tokumichi Murakami | Digital signal processor |
US5047973A (en) * | 1989-04-26 | 1991-09-10 | Texas Instruments Incorporated | High speed numerical processor for performing a plurality of numeric functions |
JP3210420B2 (ja) * | 1992-06-25 | 2001-09-17 | キヤノン株式会社 | 整数上の乗算回路 |
-
1996
- 1996-08-07 HU HU9900030A patent/HUP9900030A3/hu unknown
- 1996-08-07 DE DE69624578T patent/DE69624578T2/de not_active Expired - Lifetime
- 1996-08-07 AU AU69511/96A patent/AU717246B2/en not_active Ceased
- 1996-08-07 CN CN96197836A patent/CN1107905C/zh not_active Expired - Lifetime
- 1996-08-07 CA CA002230108A patent/CA2230108C/en not_active Expired - Fee Related
- 1996-08-07 BR BR9610285A patent/BR9610285A/pt not_active IP Right Cessation
- 1996-08-07 IL IL12324196A patent/IL123241A/en not_active IP Right Cessation
- 1996-08-07 PL PL96325231A patent/PL325231A1/xx unknown
- 1996-08-07 RU RU98105621A patent/RU2139564C1/ru active
- 1996-08-07 JP JP51029097A patent/JP3750820B2/ja not_active Expired - Lifetime
- 1996-08-07 EP EP96930495A patent/EP0847552B1/en not_active Expired - Lifetime
- 1996-08-07 CN CNB031202993A patent/CN100465874C/zh not_active Expired - Lifetime
- 1996-08-07 WO PCT/US1996/012799 patent/WO1997008610A1/en active IP Right Grant
- 1996-08-07 MX MX9801571A patent/MX9801571A/es unknown
-
1998
- 1998-02-27 NO NO19980873A patent/NO317739B1/no not_active IP Right Cessation
- 1998-12-17 HK HK98113897A patent/HK1012513A1/xx not_active IP Right Cessation
-
2005
- 2005-08-29 JP JP2005248479A patent/JP4064989B2/ja not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012248208A (ja) * | 2006-12-05 | 2012-12-13 | Altera Corp | プログラマブルロジックデバイスのための大きな乗算器 |
Also Published As
Publication number | Publication date |
---|---|
HUP9900030A3 (en) | 1999-11-29 |
JP4064989B2 (ja) | 2008-03-19 |
IL123241A (en) | 2001-10-31 |
AU6951196A (en) | 1997-03-19 |
EP0847552A1 (en) | 1998-06-17 |
NO980873D0 (no) | 1998-02-27 |
NO317739B1 (no) | 2004-12-13 |
CA2230108A1 (en) | 1997-03-06 |
PL325231A1 (en) | 1998-07-06 |
WO1997008610A1 (en) | 1997-03-06 |
IL123241A0 (en) | 1998-09-24 |
CN1107905C (zh) | 2003-05-07 |
HK1012513A1 (en) | 1999-08-06 |
DE69624578T2 (de) | 2003-09-04 |
CN1549106A (zh) | 2004-11-24 |
NO980873L (no) | 1998-04-28 |
DE69624578D1 (de) | 2002-12-05 |
JPH11511577A (ja) | 1999-10-05 |
AU717246B2 (en) | 2000-03-23 |
HUP9900030A2 (hu) | 1999-04-28 |
CN100465874C (zh) | 2009-03-04 |
BR9610285A (pt) | 1999-03-16 |
CN1200821A (zh) | 1998-12-02 |
JP3750820B2 (ja) | 2006-03-01 |
CA2230108C (en) | 2000-12-12 |
EP0847552B1 (en) | 2002-10-30 |
RU2139564C1 (ru) | 1999-10-10 |
EP0847552A4 (en) | 2000-01-12 |
MX9801571A (es) | 1998-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4064989B2 (ja) | パック・データの乗加算演算を実行する装置 | |
KR100329339B1 (ko) | 압축데이터에의한승산-가산연산수행장치 | |
US5859997A (en) | Method for performing multiply-substrate operations on packed data | |
JP3711147B2 (ja) | パック・データを処理する1組の命令 | |
US7430578B2 (en) | Method and apparatus for performing multiply-add operations on packed byte data | |
US7395298B2 (en) | Method and apparatus for performing multiply-add operations on packed data | |
KR100310584B1 (ko) | 승산-가산연산을이용한신호처리시스템 | |
US5835392A (en) | Method for performing complex fast fourier transforms (FFT's) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060207 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060425 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060725 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060728 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061025 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061205 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070305 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070316 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070605 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070703 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070927 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20071102 |
|
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: 20071127 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071227 |
|
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: 20110111 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110111 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120111 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130111 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130111 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 |
|
EXPY | Cancellation because of completion of term |