JP4064989B2 - パック・データの乗加算演算を実行する装置 - Google Patents

パック・データの乗加算演算を実行する装置 Download PDF

Info

Publication number
JP4064989B2
JP4064989B2 JP2005248479A JP2005248479A JP4064989B2 JP 4064989 B2 JP4064989 B2 JP 4064989B2 JP 2005248479 A JP2005248479 A JP 2005248479A JP 2005248479 A JP2005248479 A JP 2005248479A JP 4064989 B2 JP4064989 B2 JP 4064989B2
Authority
JP
Japan
Prior art keywords
data
packed
result
storage area
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.)
Expired - Lifetime
Application number
JP2005248479A
Other languages
English (en)
Other versions
JP2006107463A (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.)
Intel Corp
Original Assignee
Intel Corp
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
Priority claimed from US08/522,067 external-priority patent/US6385634B1/en
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2006107463A publication Critical patent/JP2006107463A/ja
Application granted granted Critical
Publication of JP4064989B2 publication Critical patent/JP4064989B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7857Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) using interleaved memory
    • 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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/4806Computations with complex numbers
    • G06F7/4812Complex multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum of products
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction 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/5336Reduction 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/5338Reduction 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)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Discrete Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Holo Graphy (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Hair Curling (AREA)

Description

本発明は、具体的には、コンピュータ・システム分野に関する。より詳細には、パック・データ演算の分野に関する。
一般的なコンピュータ・システムにおいて、処理装置は、命令を使用して、多数のビット(例えば64個)で表された値を処理し、1つの結果を得るように構成されている。例えば、加算命令の実行では、第1の64ビット値と第2の64ビット値を加算して、その結果を、第3の64ビット値として記憶する。しかし、マルチメディア・アプリケーション(例えば、CSC(computer supported cooperation:マルチメディア・データ操作と通信会議の統合)、2D/3Dグラフィックス、画像処理、映像圧縮/解凍、認識アルゴリズム、音声操作を対象としたアプリケーション)では、少数のビットで表されることもある大量のデータを操作する必要がある。例えば、グラフィック・データには一般に8ビットまたは16ビットが必要であり、音声データには一般に、8ビットまたは16ビットが必要である。これらのマルチメディア・アプリケーションはそれぞれ、1つまたは複数のアルゴリズムを必要とし、これらのアルゴリズムのそれぞれは、いくつかの演算を必要とする。アルゴリズムには例えば、加算演算、比較演算およびシフト演算を必要とするものがある。
マルチメディア・アプリケーション(および同じ特性を有するその他のアプリケーション)の能率を改善するために、処理装置によって、パック・データ・フォーマットが用いられることがある。パック・データ・フォーマットは、単一の値を表すために一般には使用されるビット群が、それぞれが別の値を表す一定の大きさのいくつかのデータ要素に分割されるものである。例えば、64ビット・レジスタが、別々の32ビット値を表す2つの32ビット要素に分割される。さらに、これらの処理装置は、単一の命令に応答して、これらのパック・データの各要素を別々に並列に操作する命令を用意している。例えば、パック加算命令は、第1のパック・データのデータ要素と対応する第2のパック・データのデータ要素を加算する。したがって、多数のデータ要素に対して実行されなければならない5つの演算を含むループをマルチメディア・アルゴリズムが要求する場合には、これらのデータをパックし、パック・データ命令を使用してこれらの演算を並列に実行することが望ましい。このようにすると、これらの処理装置はより効率的に、マルチメディア・アプリケーションを処理することができる。
しかし、演算ループが、パック・データに対して処理装置によって実行されない演算を含む(すなわち、処理装置が適当な命令を欠いている)場合には、データは、この演算を実行するためにアンパックされなければならない。例えば、マルチメディア・アルゴリズムが加算演算を要求し、前述のパック加算命令が使用できない場合には、プログラマは、第1のパック・データおよび第2のパック・データをアンパック(すなわち、第1のパック・データおよび第2のパック・データを含む要素を分離する)し、分離された要素を個々に加算し、次いで、この結果をパックして、以降のパック処理のためのパック・データとしなければならない。このようなパックおよびアンパック操作を実行するのに必要な処理時間がしばしば、パック・データ・フォーマットを導入した理由である性能上の利点を打ち消す。したがって、コンピュータ・システムには、一般的なマルチメディア・アルゴリズムに必要な全ての演算を用意したパック・データ・セット命令を組み込むことが望ましい。しかし、現在の汎用マイクロプロセッサではダイの面積が限られているため、追加することのできる命令の数も限られてくる。したがって、汎用性(すなわち、多種多様なマルチメディア・アルゴリズムに使用できる命令)および最大限の性能上の利点をともに提供する命令を考案することが望ましい。
マルチメディア・アルゴリズムで使用する演算を行う1つの技術は、別個のディジタル信号処理装置(DSP)を既存の汎用処理装置(米国カリフォルニア州サンタクララ市のインテル社(Intel Corporation)製のIntel(R) 486など)に結合するものである。汎用処理装置は、パック・データを使用して実行できるジョブ(例えば、ビデオ処理)をDSPに割り当てる。
このようなDSPには、累算値に、2つの値の乗算結果を加算する乗累算(multiply accumulate)命令が含まれる。(Kawakami他「A Single−Chip Digital Signal Processor for Voiceband Applications」, IEEE International Solid−State Circuits Conference, 1980, pp. 40−41を参照のこと。)このDSP用の乗累算演算の例を以下の第1表に示す。この命令は、ソース1およびソース2としてそれぞれアクセスされるデータ値A1 およびB1 に対して実行される。
Figure 0004064989
この命令の1つの限界は、その効率に限界があることである。すなわち、この命令は、2つの値と1つの累算値に対する演算だけしか実施しない。例えば、2セットの2つの値を乗累算するためには、以下の2つの命令を直列に実行する必要がある。1)第1のセットの第1の値と第2のセットの第1の値、ならびに累算値または0(ゼロ)から乗累算を実施し、中間累算値を導く。2)第1のセットの第2の値と第2のセットの第2の値、ならびに中間累積値から乗累算を実施し、結果を導く。
2セットの2つの値および1つの累算値に対して演算を実施する乗累算命令を含む別のDSPがある(本明細書ではAndo他と称する米国特許第4771470号「Digital Signal Processor with Parallel Multipliers」を参照のこと)。このDSP用の乗累算命令の例を以下の第2表に示す。この命令は、ソース1〜4としてそれぞれアクセスされるデータ値A1 、A2 、B1 、B2 に対して実行される。
Figure 0004064989
この技術を使用すると1つの命令で、2セットの2つの値に乗算が実行され、次いで累算値に加算される。
この乗累算命令は、常に累算値に加算されるので、その汎用性には限界がある。そのため、乗累算以外の演算にこの命令を使用することは難しい。例えば、マルチメディア・アプリケーションでは、複素数の乗算がよく使用される。2つの複素数(例えば、r1i1およびr2i2)の乗算は、次式に従って実行される。
実数部=r1・r2‐i1・i2
虚数部=r1・i2+r2・i1
このDSPは、1つの乗累算命令で、2つの複素数を乗算する関数を実行することができない。
このような計算の結果が、後段の累算ではない乗算演算に必要である場合には、この乗累算命令の限界はより明らかになる。例えば、実数部がこのDSPを使用して計算される場合には、結果を正確に計算するために累算値をゼロに初期設定する必要がある。次いで、虚数部を計算するために累算値を再びゼロに初期設定する必要がある。この結果生じた複素数と第3の複素数(例えばr3i3)について別の複素数乗算を実行するためには、結果の複素数を基準化(scaling)し直して、受入れ可能なメモリ・フォーマットとしてに記憶しなけばならず、累算値の初期値を再びゼロに設定しなければならない。こうして初めて、前述のような複素数乗算の実行が可能となる。これらのそれぞれの演算では、累算値に向けられたALUは余分なハードウェアであり、この累算値を再初期設定するために追加の命令が必要となる。これらの追加命令が、このような場合以外に必要となる可能性は低い。
この技術の他の限界は、高価なマルチポート・メモリを介してデータにアクセスしなければならないことである。これは、乗算器が直接にデータ・メモリと接続されるためである。したがって、相互接続のコストおよびこの相互接続が命令から分離されないことによって、利用できる並列処理の量は制限される。
Ando他はまた、この高価な相互接続に代わるものは、乗算すべき後続のデータ対それぞれに遅延を与えることであると記載している。この解決策は、第1表に示した解決策が提供する性能上の利点を減少させる。
さらに、マルチポート・メモリまたはパイプライン・メモリ・アクセスの概念は複数アドレスの使用を必然的に伴う。1データ1アドレスの明示的な使用が、重要なパック・データの概念がこの技術に用いられないことを明白に示している。
処理装置は、第1のパック・データを有する第1の記憶領域および第2のパック・データを有する第2の記憶領域を有する。各パック・データは、第1、第2、第3、第4のデータ要素を含む。
乗加算回路が、第1および第2の記憶領域に結合される。乗加算回路は、第1、第2、第3、第4の乗算器を含み、各乗算器は、対応する1セットの前記データ要素セットを受け取る。乗加算回路はさらに、第1および第2の乗算器に結合された第1の加算器および、第3および第4の乗算器に結合された第2の加算器を含む。第3の記憶領域が加算器に結合される。第3の記憶領域は、第1および第2の加算器の出力を、第3のパック・データの第1および第2のデータ要素としてそれぞれ保存するための第1および第2のフィールドを含む。
以下の説明では、本発明を完全に理解してもらうために数多くの具体的な詳細を説明する。ただし、これらの具体的な詳細なしでも本発明を実施できることを理解されたい。その他の例では、本発明が不明瞭にならないように、周知の回路、構造、技術を詳細に示すことはしない。
定義
本発明の実施形態の説明を理解する基礎として、以下の定義を示す。
ビット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表は、開示の乗加算演算のビット・レベルでの例を示すものである。
Figure 0004064989
Figure 0004064989
このように、記載の乗加算演算の実施形態は、ソース1とソース2の対応する16ビット・データ要素どうしを乗算し、4つの32ビット中間結果を生成する。これらの32ビット中間結果は、2つずつ加算されて2つの32ビット結果が生成され、これらはパックされて、パック結果のそれぞれの要素となる。後述するように、代替実施形態では、データ要素、中間結果、結果のビット数が可変である。さらに、代替実施形態では、使用されるデータ要素の数、生成される中間結果の数、および結果として生じるパック・データのデータ要素の数が可変である。
コンピュータ・システム
第1図に、本発明の一実施形態に基づいた例示的なコンピュータ・システム100を示す。コンピュータ・システム100は、情報を受け渡しするバス101または、その他の通信ハードウェアおよびソフトウェア、およびバス101に結合し、情報を処理する処理装置109を含む。処理装置109は、CISCまたはRISC型アーキテクチャを含むあらゆる種類、アーキテクチャの中央処理装置を代表する。コンピュータ・システム100はさらに、バス101に結合し、処理装置109が実行する情報および命令を記憶するランダム・アクセス・メモリ(RAM)またはその他の動的記憶装置(主記憶104と称する)を含む。主記憶104は、処理装置109による命令の実行中に、一時変数またはその他の中間情報を記憶するためにも使用することができる。コンピュータ・システム100はさらに、バス101に結合され、処理装置109のための静的情報および命令を記憶するリード・オンリー・メモリ(ROM)106および/またはその他の静的記憶装置を含む。情報および命令を記憶するデータ記憶装置107がバス101に結合される。
第1図に示す処理装置109はさらに、実行ユニット130、乗加算ユニット145、レジスタ・ファイル150、キャッシュ160、デコーダ165、内部バス170を含む。当然ながら、処理装置109は、本発明の理解には必要のない追加の回路も含んでいる。
実行ユニット130は、処理装置109が受け取った命令の実行に使用される。汎用型処理装置内で一般に実行される命令を認識するほかに、実行ユニット130は、パック・データ・フォーマットに対する演算を実行するパック命令セット140中の命令142を認識する。パック命令セット140は、乗加算演算をサポートする命令を含む。平成8年(1996)7月17日に提出された特願平9−510252号(特表平11−511575号)「パック・データを処理する1組の命令(A Set of instructions for Operating on Packed Data)」に記載されているように、パック命令セット140にはさらに、パック操作、アンパック操作、パック加算演算、パック除算演算、パック乗算演算、パック・シフト演算、パック比較演算、ポピュレーションカウント、パック論理演算セット(パックAND、パックANDNOT、パックOR、パックXORを含む)を含めることができる。実行ユニット130さらに、乗加算演算を実行する乗加算ユニット145を含む。
実行ユニット130は、内部バス170によってレジスタ・ファイル150に結合される。レジスタ・ファイル150は、データを含む情報を記憶する処理装置109の記憶領域を表す。実行ユニット130はさらに、キャッシュ160およびデコーダ165に結合される。キャッシュ160は、例えば主記憶104からのデータおよび/または制御信号をキャッシュするのに使用される。デコーダ165は、処理装置109が受け取った命令をデコードして、制御信号および/またはマイクロコード・エントリ・ポイントとするのに使用される。これらの制御信号および/またはマイクロコード・エントリ・ポイントに応答して、実行ユニット130が適当な演算を実行する。例えば、加算命令を受け取った場合には、デコーダ165は実行ユニット130に、要求のあった加算を実行させる。デコーダ165は、どんな機構(例えば、ルックアップ・テーブル、ハードウェア・インプリメンテーション、PLAなど)を使用して実現してもよい。したがって、デコーダおよび実行ユニットによる各種命令の実行は一連のif/then文によって表現されるが、命令の実行は、これらのif/then文の逐次処理を要求しないことが理解される。このif/then処理を論理的に実行する機構は全て本発明の範囲に含まれると考えるべきである。
第1図にはさらに、磁気ディスクまたは光ディスクなどのデータ記憶装置107が示されている。これに対応するディスク駆動機構をコンピュータ・システム100に結合することができる。コンピュータの使用者に向けて情報を表示するため、コンピュータ・システム100をさらに、バス101を介して表示装置121に結合するとができる。表示装置121には、フレーム・バッファ、専用のグラフィックス・レンダリング装置、陰極線管(CRT)、および/またはフラット・パネル・ディスプレイを含めることができる。情報およびコマンド選択を処理装置109に送るために、文字数字およびその他のキーを含む文字数字式入力装置122が一般にバス101に結合される。別の種類のユーザ入力装置が、マウス、トラックボール、ペン、タッチ・スクリーン、カーソル方向キーなどのカーソル制御装置123である。これらは、方向情報およびコマンド選択を処理装置109に送り、表示装置121上でのカーソルの動きを制御する。この入力装置は一般に、2軸、すなわち第1の軸(例えばx軸)および第2の軸(例えばy軸)に対する自由度2を有し、これによってこの装置は、平面上の位置を指定することができる。しかし、本発明を、自由度が2の入力装置のみに限定してはならない。
バス101に結合することのできる別の装置は、命令、データまたはその他の情報を紙、フィルム、またはこれらと類似の媒体に印刷するのに使用できるハード・コピー装置124である。コンピュータ・システム100はさらに、情報を記録するためにマイクロホンに結合させたオーディオ・ディジタイザなどの録音および/または再生装置125に結合することができる。この装置にはさらに、ディジタル音声を再生するためにデジタル/アナログ(D/A)変換器に結合したスピーカを含めることができる。
また、コンピュータ・システム100をコンピュータ・ネットワーク(例えばLAN)の端末とすることができる。この場合、コンピュータ・システム100はコンピュータ・ネットワークのコンピュータ・サブシステムとなる。コンピュータ・システム100に任意選択でビデオ・ディジタイジング装置126を含めてもよい。ビデオ・ディジタイジング装置126を使用して、ビデオ画像を捕捉し、コンピュータ・ネットワーク上の端末に伝送することが可能となる。
一実施形態ではさらに、米国カリフォルニア州サンタクララのインテル社製の既存処理装置(Pentium(R) プロセッサなど)が使用するx86命令セットと互換性のある命令セットを処理装置109がサポートする。したがって一実施形態では、処理装置109が、米国カリフォルニア州サンタクララのインテル社が規定したIATM−Intel Architecture(米国カリフォルニア州サンタクララのインテル社発行の「Microprocessor Intel Data Books 」volume 1 and volume 2. 1992 and 1993参照)でサポートされている全ての演算をサポートする。この結果、処理装置109は、本発明の演算に加えて既存のx86演算をサポートすることができる。本発明を、x86ベースの命令セットに組み込まれているように記述しているが、本発明を、他の命令セットに組み込んだ代替実施形態も可能である。例えば本発明を、新たな命令セットを使用する64ビット処理装置に組み込むことができる。
第2図に、本発明の一実施形態に基づいた処理装置のレジスタ・ファイルを示す。レジスタ・ファイル150は、制御/ステータス情報、整数データ、浮動小数点データ、パック・データを含む情報を記憶するのに使用される。第2図に示す実施形態では、レジスタ・ファイル150は、整数レジスタ201、レジスタ209、ステータス・レジスタ208、命令ポインタ・レジスタ211を含む。ステータス・レジスタ208は処理装置109のステータスを表示する。命令ポインタ・レジスタ211は、次に実行する命令のアドレスを記憶する。整数レジスタ201、レジスタ209、ステータス・レジスタ208、命令ポインタ・レジスタ211は全て、内部バス170に結合される。追加のレジスタを内部バス170に結合することもできる。
一実施形態では、レジスタ209が、パック・データおよび浮動小数点データの両方に使用される。このような実施形態では、処理装置109はレジスタ209を常に、スタック・リファレンス式の浮動小数点レジスタまたは非スタック・リファレンス式のパック・データ・レジスタのいずれかとして取り扱う。この実施形態では、処理装置109がレジスタ209を、レジスタ209上のスタック・リファレンス式の浮動小数点レジスタと非スタック・リファレンス式のパック・データ・レジスタの間で切り換えることができる機構が含められる。このような他の実施形態では、処理装置109がレジスタ209を、非スタック・リファレンス式の浮動小数点レジスタおよびパック・データ・レジスタとして同時に操作する。別の例として他の実施形態では、同じこれらのレジスタを整数データの記憶に使用することができる。
当然ながら、異なる数のレジスタ・セットを含む代替の実施形態も実施可能である。例えば、代替実施形態が、浮動小数点データを記憶する別個の浮動小数点レジスタ・セットを含んでもよい。別の例として、代替実施形態が、それぞれのレジスタが制御/ステータス情報を記憶する第1のレジスタ・セットおよび、それぞれのレジスタが、整数データ、浮動小数点データ、およびパック・データを記憶することができる第2のレジスタ・セットを含んでもよい。本発明の実施形態のレジスタを、特定の種類の回路を意味するものと限定すべきではないことは明白である。本発明の実施形態のレジスタは、データの記憶および供給、ならびに本明細書に記載する機能の実行ができるものであれば何でもよい。
各種レジスタ・セット(例えば、整数レジスタ201、レジスタ209)を、異なる数および/または異なる大きさのレジスタを含むように実施することができる。例えば、一実施形態では、整数レジスタ201が32ビットを記憶するように実施され、レジスタ209が80ビットを記憶するように実施される(浮動小数点データの記憶には80ビット全てが使用され、パック・データの記憶には64ビットのみが使用される)。さらに、レジスタ209は8つのレジスタR0 212a〜R7 212hを含む。R1 212a、R2 212b、R3 212cはレジスタ209中の別のレジスタの例である。レジスタ209中のレジスタの32個のビットを整数レジスタ201中の整数レジスタに移動させることができる。同様に、整数レジスタ中の値を、レジスタ209中の32ビットのレジスタに移動させることができる。別の実施形態では、整数レジスタ201は各レジスタが64ビットを含み、64ビットのデータを、整数レジスタ201とレジスタ209の間で移動させることができる。
第3図は、本発明の一実施形態に従ってデータを操作するのに処理装置が使用する一般的なステップを示すフロー図である。すなわち第3図は、パック・データの演算の実行、アンパック・データの演算の実行、またはその他の演算の実行の間に処理装置109がたどるステップを示す図である。例えば、このような演算には、キャッシュ160、主記憶104、リード・オンリー・メモリ(ROM)106、またはデータ記憶装置107のデータをレジスタ・ファイル150中のレジスタにロードするロード演算が含まれる。
ステップ301で、デコーダ165が、キャッシュ160またはバス101から制御信号を受け取る。デコーダ165は制御信号をデコードし、実行すべき演算を決定する。
ステップ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ビット長である。
本発明の他の実施形態では、SRC1、SRC2、DESTのいずれか1つまたはこれら全てが、処理装置109のアドレス可能な記憶空間内の記憶場所を定義することができる。例えば、SRC1が、主記憶104中の記憶場所を識別し、SRC2が、整数レジスタ201中の第1のレジスタを識別し、DESTが、レジスタ209中の第2のレジスタを識別するようにすることができる。本明細書の説明を単純にするために、本発明を、レジスタ・ファイル150へのアクセスに関して説明する。ただし、代わりにメモリを使用してもこれらのアクセスは実施できる。
ステップ303で、実行ユニット130が使用可能となって、アクセスされたデータの演算を実行する。ステップ304で、制御信号の要求に従ってレジスタ・ファイル150に結果が再び記憶される。
データおよび記憶フォーマット
第4図に、本発明の一実施形態に基づくパック・データのデータ型を示す。3つのパック・データ・フォーマット、すなわちパック・バイト401、パック・ワード402、パック・ダブルワード403が示されている。本発明の一実施形態では、パック・バイトは64ビット長であり、8つのデータ要素を含む。各データ要素は1バイト長である。データ要素は一般に、同じ長さのその他のデータ要素とともに単一のレジスタ(または記憶場所)に記憶される個別のデータ片である。本発明の一実施形態においては、1つのレジスタに記憶されるデータ要素の数は、データ要素のビット長で64ビットを割った数である。
パック・ワード402は、64ビット長であり、ワード402の4つのデータ要素を含む。ワード402の各データ要素は16ビットの情報を含む。
パック・ダブルワード403は64ビット長で、ダブルワード403の2つのデータ要素を含む。ダブルワード403の各データ要素は32ビットの情報を含む。
第5a図ないし第5c図に、本発明の一実施形態に基づいたレジスタ内のパック・データ記憶表現を示す。符号なしパック・バイトのレジスタ内表現510は、レジスタR0 212a〜R7 212hのうちの1つにおける符号なしパック・バイト401の記憶領域を示したものである。バイト・データ要素の情報はそれぞれ、バイト0の情報は、ビット7〜ビット0に、バイト1の情報は、ビット15〜ビット8に、バイト2の情報は、ビット23〜ビット16に、バイト3の情報は、ビット31〜ビット24に、バイト4の情報は、ビット39〜ビット32に、バイト5の情報は、ビット47〜ビット40に、バイト6の情報は、ビット55〜ビット48に、バイト7の情報は、ビット63〜ビット56に記憶される。したがって、レジスタの使用可能なビットは全て使用されている。この記憶配置は、処理装置の記憶効率を向上させる。8つのデータ要素にアクセスすると、8つのデータ要素に対して1つの演算を同時に実行することができる。符号付きパック・バイトのレジスタ内表現511は、符号付きパック・バイト401の記憶領域を示したものである。全てのバイト・データ要素の第8ビットが符号標識となっていることに留意されたい。
符号なしパック・ワードのレジスタ内表現512は、ワード3〜ワード0がどのように、レジスタ209の1つのレジスタに記憶されるかを示したものである。ビット15〜ビット0が、データ要素ワード0の情報を含み、ビット31〜ビット16が、データ要素ワード1の情報を含み、ビット47〜ビット32が、データ要素ワード2の情報を含み、ビット63〜ビット48が、データ要素ワード3の情報を含む。符号付きパック・ワードのレジスタ内表現513も、符号なしパック・ワードのレジスタ内表現512と同様である。各データ要素ワードの第16ビットが符号標識となっていることに留意されたい。
符号なしパック・ダブルワードのレジスタ内表現514は、2つのダブルワード・データ要素がレジスタ209に記憶される方法を示したものである。ダブルワード0は、レジスタのビット31〜ビット0に記憶される。ダブルワード1は、レジスタのビット63〜ビット32に記憶される。符号付きパック・ダブルワードのレジスタ内表現515も、符号なしパック・ダブルワードのレジスタ内表現514と同様である。必要な符号ビットが、ダブルワード・データ要素の第32ビットにあることに留意されたい。
前述のようにレジスタ209を、パック・データおよび浮動小数点データの両方に使用することができる。本発明のこの実施形態では、個別のプログラム処理装置109が、アドレスされたレジスタ、例えばR0 212aに、パック・データまたは浮動小数点データのどちらが記憶されているかを追跡する必要がある場合がある。代替実施形態では、処理装置109は、レジスタ209の個々のレジスタに記憶されたデータの種類を追跡することができる。この代替実施形態では、例えば、パック加算演算を浮動小数点データに対して試みた場合にエラーを生じる。
制御信号フォーマット
パック・データを操作するのに処理装置109が使用する制御信号フォーマットの一実施形態を以下に説明する。本発明の一実施形態では、制御信号は32ビットで表される。デコーダ165はバス101から制御信号を受け取ることができる。他の実施形態では、このような制御信号をデコーダ165は、キャッシュ160から受け取ることができる。
第6a図に、パック・データの使用を指示する本発明の一実施形態に基づいた制御信号フォーマットを示す。ビット31〜ビット26のオペレーション・フィールドOP 601は、処理装置109が実行すべき、例えば、パック加算演算などの演算についての情報を提供する。ビット25〜ビット20のSRC1 602は、レジスタ209中の1つのソース・レジスタのアドレスを供給する。このソース・レジスタは、制御信号の実行に使用される第1のパック・データ、すなわちソース1を含む。同様に、ビット19〜ビット14のSRC2 603は、レジスタ209中の1つのレジスタのアドレスを供給する。この第2のソース・レジスタは、演算の実行中に使用されるパック・データ、すなわちソース2を含む。ビット5〜ビット0のDEST 605は、レジスタ209中の1つのレジスタのアドレスを含む。この宛先レジスタは、パック・データ演算の結果パック・データを記憶する。
ビット12およびビット13の制御ビットSZ 610は、第1および第2のパック・データ・ソース・レジスタにおけるデータ要素の長さを指示する。SZ 610が012 の場合には、パック・データは、パック・バイト401としてフォーマットされる。SZ 610が102 の場合には、パック・データは、パック・ワード402としてフォーマットされる。SZ 610の002 および112 は予備であるが、他の実施形態では、これらの値の1つをパック・ダブルワード403の指示に使用することができる。
ビット11の制御ビットT 611は演算を、飽和モード(saturate mode)で実行するかどうかを指示する。T 611が1の場合には、飽和演算(saturating operation)が実行される。T 611が0の場合には、非飽和演算(non−saturating operation)が実行される。飽和演算については後に述べる。
ビット10の制御ビットS 612は符号付き演算の使用を指示する。S 612が1の場合には、符号付き演算が実行される。S 612が0の場合には、符号なし演算が実行される。
第6b図に、パック・データの使用を指示する本発明の一実施形態に基づいた第2の制御信号フォーマットを示す。このフォーマットは、インテル社(Intel Corporation,Literature Sales,P.O. Box 7641,Mt.prospect,IL,60056−7641)発行の「Pentium Processor Family User’s Manual」に記載されている汎用整数演算コード・フォーマットと符合する。OP 601、SZ 610、T 611およびS612は全てが結合されて1つの大きなフィールドを占めることに留意されたい。いくつかの制御信号では、ビット3〜ビット5がSRC1 602である。SRC1 602のアドレスが存在する一実施形態では、ビット3〜ビット5はまた、DEST 605にも対応する。SRC2 603のアドレスが存在する代替実施形態ではビット0〜ビット2がDEST 605にも対応する。パック・シフト即値演算のようなその他の制御信号では、ビット3〜ビット5が、演算コード・フィールドの拡張部分を表す。一実施形態では、プログラマが、制御信号のこの拡張部分に、桁移動数などの即値を含めることができる。一実施形態では、即値は、制御信号の後に続く。これは、「Pentium Processor Family User’s Manual」のappendix F、F−1〜F−3ページに詳述されている。ビット0〜ビット2はSRC2 603を表す。この汎用フォーマットでは、レジスタ・ツー・レジスタ、メモリ・ツー・レジスタ、レジスタ・バイ・メモリ、レジスタ・バイ・レジスタ、レジスタ・バイ・イミディエート(即値)、レジスタ・ツー・メモリの各アドレッシングが可能である。一実施形態では、この汎用フォーマットは、整数レジスタ・ツー・レジスタ、およびレジスタ・ツー・整数レジスタの各アドレッシングもサポートする。
飽和/不飽和の説明
前述のとおり、T 611は、演算を選択的に飽和させるかどうかを指示する。 飽和イネーブル状態で演算結果がデータ範囲を、オーバーフローまたはアンダーフローする場合には、この結果はクランプされる。クランプとは、結果が、データ範囲の最大値または最小値を上まわる場合に、この結果を、最大値または最小値に設定することである。アンダーフローの場合には、飽和によって結果が、データ範囲の最小値にクランプされ、オーバーフローの場合には最大値にクランプされる。各データ・フォーマットに対する許容範囲を第4表に示す。
Figure 0004064989
前述のように、T 611は、飽和演算が実行されているかどうかを指示する。したがって、飽和イネーブル状態で、符号なしバイト・データ・フォーマットを使用した演算結果が258である場合、この結果は255にクランプされ、その後、その演算の宛先レジスタに記憶される。同様に、処理装置109が、飽和イネーブル状態で、符号付きワード・データ・フォーマットを使用していて、演算結果が−32999である場合、この結果は−32768にクランプされ、その後、その演算の宛先レジスタに記憶される。
乗加算演算
本発明の一実施形態では、SRC1レジスタは、パック・データ(ソース1)を、SRC2レジスタは、パック・データ(ソース2)を含み、DESTレジスタは、ソース1とソース2の乗加算演算を実行した結果を含む。乗加算演算の第1ステップでは、ソース1の各データ要素を、ソース2の対応するデータ要素と独立に掛け合わせて、中間結果セットを生成する。これらの中間結果を対で合計して、この乗加算演算の結果を生成する。
本発明の一実施形態では、符号付きパック・データに対して乗加算演算が実行され、この結果は、オーバーフローを避けるために切り捨てられる。さらに、この演算は、パック・ワード・データに対して実行され、その結果は、パック・ダブルワードにパックされる。ただし、その他の種類のパック・データに対する演算をサポートする代替実施形態も可能である。
第7図は、本発明の一実施形態に従って、パック・データの乗加算演算を実行するステップを示すフロー図である。
ステップ701で、デコーダ165は、処理装置109が受け取った制御信号をデコードする。したがってデコーダ165は、乗加算演算の演算コードをデコードする。
ステップ702で、デコーダ165は、SRC1 602およびSRC2 603のアドレスが与えられているレジスタ・ファイル150内のレジスタ209に内部バス170を介してアクセスする。レジスタ209は実行ユニット130に、SRC1 602レジスタに記憶されたパック・データ(ソース1)およびSRC2 603レジスタに記憶されたパック・データ(ソース2)を供給する。すなわち、レジスタ209はパック・データを内部バス170を介して実行ユニット130に送る。
ステップ703で、デコーダ165は、実行ユニット130の乗加算ユニット145を命令の実行ができるイネーブル状態とする。ステップ714では以下の操作が実行される。ソース1のビット15〜ビット0に、ソース2のビット15〜ビット0が乗じられ、第1の32ビット中間結果(中間結果1)が生成される。ソース1のビット31〜ビット16に、ソース2のビット31〜ビット16が乗じられ、第2の32ビット中間結果(中間結果2)が生成される。ソース1のビット47〜ビット32に、ソース2のビット47〜ビット32が乗じられ、第3の32ビット中間結果(中間結果3)が生成される。ソース1のビット63〜ビット48に、ソース2のビット63〜ビット48が乗じられ、第4の32ビット中間結果(中間結果4)が生成される。中間結果1が中間結果2に加算され、結果ビット31〜0が生成され、中間結果3が中間結果4に加算され、結果ビット63〜32が生成される。
乗算と加算を、直列演算、並列演算、または直列演算と並列演算の組合せで実行する異なる実施形態も可能である。
ステップ720で結果が、DESTレジスタに記憶される。
パック・データ乗加算回路
一実施形態では、アンパック・データの1回の乗算と同じクロック・サイクル数で、複数のデータ要素に対する乗加算演算を実行できる。同じクロック・サイクル数で実行するために、並列処理を使用する。すなわち、データ要素の乗加算演算を実行する命令を同時にレジスタに与える。
第8図に、本発明の一実施形態に基づいてパック・データの乗加算演算を実行する回路の概要を示す。演算制御装置800は、乗加算命令の制御信号を処理する。演算制御装置800は、パック乗加算器801の制御信号をイネーブル線880上に出力する。
パック乗加算器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が受け取る。
加算器850および加算器851はそれぞれ、その2つの32ビット入力を加算する。加算器850の出力(すなわち、結果ビット31〜ビット0)および加算器851の出力(すなわち、結果ビット63〜ビット32)は64ビットの結果に結合されて結果レジスタ871に送られる。
一実施形態では、加算器851および加算器850がそれぞれ、適当な伝播遅延を有する32ビット加算器から成る。しかし、各種の方法で、加算器851および加算器850を実現する代替実施形態も可能である。
第1表に関して記載した従来技術のDSP処理装置を使用して、この乗加算命令と等価の演算を実行するには、累算値をゼロにする1つの命令および4つの乗累算命令が必要である。第2表に関して記載した従来技術のDSP処理装置を使用して、この乗加算命令と等価の演算を実行するには、累算値をゼロにする1つの命令および2つの乗累算命令が必要である。
本発明の乗加算ユニット145の一実施形態では、本発明においてパック乗算演算に使用されるそれぞれの16ビット乗算は、2ビットのブースの方法(Booth algorithm)を使用して実現される。乗算器におけるブースの方法の主な目的は、合計される部分積の数を減らすことである。部分積を少なくすると結果的に、乗算器に対するハードウェアおよび面積の要件が緩和される。以下の第5表に、16個の部分積が生成される共通16ビット乗算プロセスを記述する。各部分積は1ビットだけ左にシフトされ、乗数のそれぞれのビットが「1」であるか「0」であるかによって、全ての項が「0」となるか、または被乗数の正確な複製となる。全ての16個の部分積全てをスライスごとに合計して、32ビットの結果を生成する。
Figure 0004064989
一方、下記の第6表に示す2ビット・ブース乗算器は異なる操作をする。この場合、合計で8つの部分積があり、各部分積は17ビット長である。全ての部分積は、それぞれの部分積の内容を書き取るそれ自体のブース・エンコーダを有する。代替実施形態では、部分積を選択するのに、その他のブース・エンコード方式を使用することができる。
一般的な2ビット・ブース・エンコーダは5つの出力を有する。これらはそれぞれ、ゼロ、プラス1、プラス2、マイナス1、マイナス2演算用のものである。その真理値表を下記の第6表に示す。
Figure 0004064989
ブース=−2yk+yk+yk−1
第6表に示すように、yk+1、yk、およびyk‐1は、上位から降順に並べた乗数の隣接するビットである。下記の第7表にさらに、ブース・エンコーダの出力に基づく部分積の形態を記載する。
Figure 0004064989
部分積を拡張する符号の代わりに、符号生成方法を使用して、部分積を減らすのに必要な桁上げ保存加算器(CSA)の数を減らす。第8表に、符号生成方法を示す。部分積の符号ビットの補数が部分積の前に付加される。次いで、2つの1ビットが符号ビットの補数の前に付加される。
Figure 0004064989
下記の第9表に、2ビット・ブース・エンコーダおよび符号生成方法を使用して8つの部分積を生成する本発明の一実施形態に使用される16ビット乗算のプロセスを示す。
Figure 0004064989
一実施形態では、各ブース・エンコーダが隣接する3つの乗数ビットを含む(y0は、乗算器ビットの最下位ビットであり、y15は最上位ビットである)。部分積の形態が、特定のブース・エンコーダに接続された17個のセレクタおよび否定回路によって定義される。セレクタのデータ・ビットは、隣接する2つの乗数ビット、それらの補数、およびVcc(ゼロ演算用)を含む。選択された出力は次いで、一般にウォレス・ツリーと呼ばれる部分積減数ツリーの迷路を通過する。
部分積が全て選択されると、部分積の加算が開始される。ウォレス・ツリーは、全加算器および半加算器から形成される。第9a図ないし第9e図に、乗加算ユニット145内の4つの16ビット乗算器のそれぞれで実現され、本発明の一実施形態のために部分積の合計および減数を実行するウォレス・ツリーを示す。図示のように、8つの部分積は6つの部分積に減数され、次いで、4つの部分積、3つの部分積、最終的に2つの部分積にまで減数される。
より具体的には、第9a図ないし第9e図に示すように、各行の下付き数字は、部分積のビットを表す(ase15、as15 、a14〜a0 )。各行は、別々の部分積を表す。negh 〜nega は、各部分積の2の補数の+1部分を表す。その結果、ブース・エンコードされた乗数のあるビットが負の場合には、その対応する部分積の「neg」ビットが1であることが次の行に明示される。
さらに、第9a図ないし第9e図に示すように、S<位置><加算器番号>は、桁上げ保存加算器の合計部分を表す。<加算器番号>は、どの加算器行に合計が属するかを示す。加算器は、第9a図ないし第9e図の上から下に向かって番号が付けられている。<位置>は、この加算器が、どの位置(0...31)に対して演算を実施するかを示す。例えば、S42は、ビット位置4に対応する桁上げ保存加算器2の合計である。
C<位置><レベル>は、桁上げ保存加算器の桁上げ部分を表す。<レベル>は、加算器のそれぞれの桁上げ行を示す。<位置>は、この加算器が、どの位置(0...31)に対して演算を実施するかを示す。桁上げ保存加算器は、全加算器でも、半加算器でもよい。全加算器は3ビットを加算する。半加算器は2ビットを加算する。
第9a図ないし第9e図には前述のとおり、符号生成方法の実施態様も示されている。図示のように、符号生成方法は、第1の部分積行の上の行のビット位置16に1を生成する。最後の部分積行には、最上位のブース・エンコード数が負の場合には、この部分積は2の補数がとられるので、下の1行に1が作り出される。このプロセスは一般に、8行ではなく10行を必要とする。乗算の行が多いほど、ハードウェアは、部分積を、桁上げ伝播加算器が加算できる2つの数にまで減らす必要が増す。
しかし、2進乗算は加算を介して実行される。2つの数を加算するときには、数の順序は関係ない。どちらの数が最初であっても結果は同じである。ウォレス・ツリー全般にわたってこの原理を利用して、必要とされる桁上げ保存の回数を低減させる。具体的には、一実施形態において、第9a図の第1行のビット位置16にある1が、negh を含む第9図の最後の行のビット位置16に移される。その結果、使用する行が少なくなるので、減数を実施するのに必要なハードウェアが少なくて済む。
第9b図に、減数の第1レベルの結果を示す。四角い囲いは、桁上げ保存加算器がどのビットに対して演算を実施したかを示している。全てのものを6つの行にはめ込むため、いくつかのビットが移動されている。例えば、ビットdse15は第1行に、Cse15は第5行にそれぞれ移動されている。ただし、ビットは、同じビット位置の中だけで上下に移動させなければならない。第9b図から第9c図に移ると、行の数が4に減少している。第9c図から第9e図に移ると、行の数が3に減少している。最終的には第9e図に示すように、桁上げ保存加算器のもう一つの行によって行数が2に減少する。
第10a図ないし第10f図に、第9a図ないし第9e図に示したウォレス・ツリーの線図を実現する全加算器および半加算器からなる回路の一実施形態を示す。
第11図に、この装置の一実施形態のブロック図を示す。全く同じ2つの16ビット乗算器が示されている。この乗算器は、ビット0〜31またはビット32〜63のいずれかに対して乗加算演算を実行することができる。乗加算ユニット145を完成させるために、図示の乗算器と構造が非常によく似た2つの16ビット乗算器を追加することもできる。図示のように、各乗算器は、16ビット乗算を実行し、1.5クロック・サイクルの間に2つの部分積を生成する。第34クロックの低位相である次の0.5クロック・サイクルで、乗算器1110および1120によって生成された4つの部分積が4:2CSA 1130によって再び加算される。制御信号1150が、乗算器1110の部分積か、または4:2CSA 1130の出力で生成された部分積のいずれかを選択する(sumresおよびcoutres)。選択されたデータは、乗算器1120の部分積とともにラッチされる。第35クロックの高位相でCPA 1140が、生成された部分積を加算して32ビットの結果を生成する。32ビット加算の最後の分割が、FUBの外側のMUX−ラッチによって実施され、選択されたデータが、第35クロック・サイクルの低位相で再び書き込まれる。
一実施形態では、乗加算ユニット145は、3レイテンシ−1スループット・ルールで動作する。言い替えると、ユニット145は、パイプされていないデータ・ストリームが入力されるたびにそのタスクを完了するのに3クロック・サイクルを要する。ユニット145の全ての入力は、バッファリングされ、これによって、外界へのキャパシタンスが非常に小さくなる。
32Lの始めでデータは、ユニット145の入力で使用可能となるが、33Hが開始されるまでは、データは有効ではない。したがってこの乗算は、33Hの開始時に開始されたとみなされる。33Hの間に、被乗数入力上の有効で安定なデータは、遅延部品を通過して流れ、ラッチ1160および1170によってそれぞれラッチされる。同時に、乗数入力上のデータは、入力バッファおよびブース・エンコーダ1165、1175を通過して伝播し、ラッチ1180および1182によってラッチされる。この時点で、乗数経路上のデータと被乗数経路上のデータは相互に完全に同期される。33Lで、データは、ビット・セレクタ・アレイおよび、ウォレス・ツリーの第1の部分を形成する全加算器セットを通過し、ラッチ1180および1182のセットアップ時間前に有効となる。この時点で、部分積の数は8から4に減少する。34Hで、データは、ウォレス・ツリーの残りの部分を形成する別の全加算器セットを通過し、34Hの終わりに有効かつ安定となって、ラッチ1184および1186にラッチされる。
先に説明したように、34Lの間に、データは、部分積の最後の選択のために、4:2圧縮器1130(2つの直列全加算器)および2−1MUX1135を通過する。データは34Lの終わりに有効となり、ラッチ1190によってラッチされる。35Hの間に、ラッチ1190の出力の2つの部分積は最終的に、1つの加算ベクトルに減数される。この加算ベクトルは、ユニット145の外部とののマルチプレクサ−ラッチ境界、すなわちラッチ1195によって、分割されラッチされる。35Lでデータは、ライトバック演算に使用可能となる。
前述のように、以前の乗累算命令は常に、乗算結果を累算値に加算する。この累算値が、乗算および累算以外の演算を実行する際の障害になる(例えば、以前の累算値を必要としない新しい演算セットが要求されるたびに、累算値は消去されなければならない)。累算の前に、丸めこみなどの演算を実行する必要がある場合にも、この累算値は障害となる。
対照的に、開示の乗加算演算は累算値を繰り越さない。そのため、これらの命令を、より広範なアルゴリズムに容易に使用できる。さらに、ソフトウェアのパイプライン処理を使用して、他に引けを取らないスループットを達成することができる。この乗加算命令の汎用性を示すために、いくつかの例示的なマルチメディア・アルゴリズムを以下に説明する。これらのマルチメディア・アルゴリズムのいくつかは、追加のパック・データ命令を使用する。これらの追加パック・データ命令の操作を、記載のアルゴリズムに関して示す。これらのパック・データ命令のより詳細な記述については、平成8年(1996)7月17日に提出された特願平9−510252号(特表平11−511575号)「パック・データを処理する1組の命令(A Set of instructions for Operating on Packed Data)」を参照されたい。当然のことながら、その他のパック・データ命令を使用することもできる。なお、データ転送、ルーピング、および条件つき分岐を管理する汎用処理命令の使用を必要とするいくつかのステップは、以下の例では割愛した。
1)複素数の乗算
開示の乗加算命令を使用して、単一の命令で、第10a表に示す2つの複素数の乗算を実行することができる。前述のとおり、2つの複素数(例えばr1i1およびr2i2)の乗算は次式に従って実行される。
実数部=r1・r2‐i1・i2
虚数部=r1・i2+r2・i1
1クロック・サイクルごとにこの命令が完了するようにこの命令が実施される場合には、本発明によって、2つの複素数の乗算を1クロック・サイクルごとに実行することができる。
Figure 0004064989
別の例として、第10b表に、3つの複素数の乗算に使用する命令を示す。
Figure 0004064989
2)乗累算演算
開示の乗加算命令を、値を乗累算するのにも使用することができる。例えば、下記の第11表に示すように、それぞれ4つのデータ要素から成る2つのデータ要素セット(A1−4 およびB1−4 )の乗累算を実行することができる。一実施形態では、第6表に示した各命令が、各クロック・サイクルごとに完了するように実現される。
Figure 0004064989
各データ要素セットのデータ要素の数が8個を上まわり、それが4の倍数である場合には、以下の第12表に示すように実行すると、これらのデータ要素セットの乗累算を少ない命令で実行することができる。
Figure 0004064989
他の例として、第13表に、それぞれが2つのデータ要素を含むデータ要素セットAおよびBと、CおよびDの個別の乗累算演算を示す。
Figure 0004064989
他の例として、第14表に、それぞれが4つのデータ要素を含むデータ要素セットAおよびBと、CおよびDの個別の乗累算演算を示す。
Figure 0004064989
3)ドット積アルゴリズム
ドット積(内積とも言う)は、信号処理演算および行列演算に使用される。ドット積は例えば、行列の積の計算、演算のディジタル・フィルタリング(FIR、IIRフィルタリングなど)、相関シーケンスの計算などに使用される。多くの音声圧縮アルゴリズム(例えば、GSM、G.728、CELP、VSELPなど)、およびHi−Fi圧縮アルゴリズム(例えば、MPEG、サブバンド・コーディングなど)で、ディジタル・フィルタリングおよび相関計算が広範に使用されているため、ドット積の性能の向上が、これらのアルゴリズムの性能を向上させる。
長さNの2つのシーケンスAおよびBのドット積は以下のように定義される。
Figure 0004064989
ドット積計算の実行には、乗累算演算が広範に利用されている。この場合には、各シーケンスの対応する要素どうしが乗算され、これらの結果が累積されて、その結果としてのドット積が生成される。
ドット積計算は、乗加算命令を使用して実行することができる。例えば、4つの16ビット要素を含む種類のパック・データが使用される場合には、ドット積計算は、4つの値をそれぞれが含む2つのシーケンスに対して以下のように実行される。
1)転送命令を使用して、Aシーケンスの4つの16ビット値にアクセスしソース1を生成する。
2)転送命令を使用して、Bシーケンスの4つの16ビット値にアクセスしソース2を生成する。
3)乗加算命令、パック加算命令、シフト命令を使用して、前述のように乗累算演算を実行する。
数個以上の要素を有するベクトルに対して、第9表に示した方法が使用され、最終結果が最後に合計される。その他の支援命令には、累算レジスタを初期状態にするパックOR命令およびパックXOR命令、計算の最後の段階で不必要な値を桁移動して切り捨てるパックシフト命令などがある。ループ制御演算は、処理装置109の命令セット中にすでに存在する命令を使用して実現される。
4)離散コサイン変換アルゴリズム
離散コサイン変換(DCT)は、多くの信号処理アルゴリズムに使用される周知の関数である。この変換は、ビデオ圧縮および画像圧縮アルゴリズムで特に広範に利用されている。
画像圧縮およびビデオ圧縮アルゴリズムでは、DCTを使用して画素ブロックを、空間表現から周波数表現に変換している。周波数表現では、画像情報が、重要性が異なる各種周波数成分に分割される。圧縮アルゴリズムは、復元される画像内容に影響を及ぼさないよう選択的に、周波数成分を数量化するか、または破棄する。このようにして圧縮が達成される。
DCTの実施態様は多数ある。最も普及しているのは、高速フーリエ変換(FFT)の計算手順に基づいてモデル化された高速変換法である。高速変換法では、N桁の変換は、N/2桁の変換とその結果の再結合とに分解される。この分解は、最小の2桁の変換に達するまで、実行することができる。この基本となる2桁の変換カーネルはしばしば、バタフライ演算と呼ばれる。バタフライ演算は次のように表現される。
X=ax+b
Y=cx‐d
上式において、a、b、c、およびdは係数と呼ばれるものであり、xおよびyは入力データ、XおよびYは変換出力である。
乗加算演算によって、パック・データを使用したDCT計算を以下のように実行することができる。
1)転送命令およびアンパック命令を使用して、xおよびyを表す2つの16ビット値にアクセスしソース1(下記第15表参照)を生成する。
2)下記第15表に示すようにソース2を生成する。なお、ソース2を、いくつかのバタフライ演算で再使用することができることに留意されたい。
3)ソース1およびソース2を使用して乗加算命令を実行し、結果を生成する(下記第15表参照)。
Figure 0004064989
いくつかの状況では、バタフライ演算の係数が1となる。これらの場合、このバタフライ演算は、パック加算命令およびパック減算命令を使用して実行できる加減算にすぎなくなる。
IEEEの文書に、ビデオ会議用に逆DCT演算を実行する際に従わなければならない精度が指定されている。(IEEE Circuits and Systems Society,「IEEE Standard Specifications for the Implementations of 8×8 Inverse Discrete Cosine Transform」,IEEE Std.1180−1990,IEEE Inc.345 East 47th St.,NY,NY 10017,USA.March 18,1991を参照されたい。)開示の乗加算命令は、16ビットの入力を使用して32ビットの出力を生成するので、要求される精度を満足する。
このように、本明細書に記載の乗加算命令を使用して、複素数の乗算が必要なアルゴリズム、変換を必要とするアルゴリズム、および乗累算演算を必要とするアルゴリズムを含むいくつかの異なるアルゴリズムの性能を向上させることができる。その結果、この乗加算命令を汎用処理装置に使用して、前述の命令を上まわる数のアルゴリズムの性能を向上させることができる。
本発明を、いくつかの実施形態に関して説明してきたが、本発明が、記載の実施形態に限定されるものではないことを当業者は理解するであろう。本発明の方法および装置は、添付した請求の範囲の趣旨および範囲に含まれる修正および変更を使用しても実施可能である。したがって、本明細書の説明を、本発明を限定するものとしてではなく例示的なものとしてとらえるべきである。
第1図は、本発明の一実施形態を含むコンピュータ・システムを示す図である。 第2図は、本発明の一実施形態に基づいた処理装置のレジスタ・ファイルを示す図である。 第3図は、本発明の一実施形態に従ってデータを操作するのに処理装置が使用する一般的なステップを示すフロー図である。 第4図は、本発明の一実施形態に基づいたパック・データのデータ型を示す図である。 第5a図は、本発明の一実施形態に基づいたレジスタ中のパック・データ表現を示す図である。 第5b図は、本発明の一実施形態に基づいたレジスタ中のパック・データ表現を示す図である。 第5c図は、本発明の一実施形態に基づいたレジスタ中のパック・データ表現を示す図である。 第6a図は、本発明の一実施形態に基づいたパック・データの使用を指示する制御信号フォーマットを示す図である。 第6b図は、本発明の一実施形態に基づいたパック・データの使用を指示する第2の制御信号フォーマットを示す図である。 第7図は、本発明の一実施形態に基づいたパック・データの乗加算演算を実行するステップを示すフロー図である。 第8図は、本発明の一実施形態に基づいたパック・データの乗加算演算を実行する回路を示す図である。 第9a図ないし第9e図は、本発明の一実施形態のために部分積の加算および減数を実行するウォレス・ツリーを示す図である。 第10a図ないし第10af図は、本発明の一実施形態に対して、第9a図ないし第9e図のウォレス・ツリーを実現する回路の一実施形態を示す図である。 第11図は、本発明の一実施形態に基づいてパック・データの乗加算演算を実行する回路を示す図である。

Claims (21)

  1. 第1の複数のデータ要素を有する第1のパック・データ、およびそれに対応する第2の複数のデータ要素を有する第2のパック・データを指定する命令を受信しデコードする第1の回路と、
    前記第1の回路と通信状態にあり、第1の結果データ要素と第2の結果データ要素とを生成するためにパック乗加算演算を実行する第2の回路であって、
    前記第1の結果データ要素が、前記第1及び第2のパック・データの第2の対の対応するデータ要素に、一緒に乗算される前記第1および第2のパック・データの第1の対の対応するデータ要素を加えたものを含み、
    前記第2の結果データ要素が、一緒に乗算される前記第1および第2のパック・データの第4の対のデータ要素に、一緒に乗算される前記第1および第2のパック・データの第3の対の対応するデータ要素を加えたものを含む、
    第2の回路と
    を備えることを特徴とする演算装置。
  2. 少なくとも4つのデータ要素を含む第1のパック・データ、および少なくとも4つのデータ要素を含む第2のパック・データを記憶する記憶領域と、
    前記第1のパック・データおよび前記第2のパック・データを受け取るように前記記憶領域と結合し、命令の受信に応答して前記第1のパック・データ中および前記第2のパック・データ中のデータ要素に演算を実行して第3のパック・データ中に複数のデータ要素を生成するパック乗加算回路であって、第3のパック・データ中の複数のデータ要素の少なくとも2つは前記第1及び第2のパック・データの対応するデータ要素の積の合計を含む、パック乗加算回路と
    を備えることを特徴とする演算装置。
  3. 前記回路が、24ビット・フォーマットの前記命令のビット3から5までによって指定される前記記憶領域のある場所に、前記第3のパック・データを記憶することを特徴とする請求項2に記載の装置。
  4. 前記回路が、前記第1のパック・データを前記第3のパック・データで上書きすることを特徴とする請求項2に記載の装置。
  5. 複数のデータ要素をそれぞれが含む第1のパック・データと第2のパック・データを命令によって受信するステップであって、
    前記第1のパック・データ中の各データ要素が前記第2のパック・データ中の各データ要素に対応している、ステップと、
    前記第1のパック・データ中および前記第2のパック・データ中の前記対応するデータ要素どうしを掛け合わせて対応する中間データ要素を生成するステップであって、前記中間データ要素が複数のセットにグループ化される、ステップと、
    複数の結果データ要素を生成するステップであって、
    前記複数の結果データ要素の第1の結果データ要素が、第1の加算器へ入力として与えられる前記複数のセットの第1のセット中の中間データ要素の合計を含み、
    前記複数の結果データ要素の第2の結果データ要素が、第2の加算器へ入力として与えられる前記複数のセットの第2のセット中の中間データ要素の合計を含む、
    ステップと、そして
    前記複数の結果データ要素を合計せずに前記命令の実行を完了させるステップと
    を含むことを特徴とする命令を実行する方法。
  6. 他の命令に対するオペランドとして使用するために、前記複数の結果データ要素を第3のパック・データとして記憶するステップをさらに含むことを特徴とする請求項5に記載の方法。
  7. 前記第1のパック・データ上に前記複数の結果データ要素を書き込むステップをさらに含むことを特徴とする請求項5に記載の方法。
  8. 前記複数の結果データ要素の第3の結果データ要素を生成するステップであって、前記第3の結果データ要素が前記複数のセットの第3のセット中の中間データ要素の合計を含む、ステップと、
    前記複数の結果データ要素の第4の結果データ要素を生成するステップであって、前記第4の結果データ要素が前記複数のセットの第4のセット中の中間データ要素の合計を含む、ステップと、
    をさらに含むことを特徴とする請求項5に記載の方法。
  9. 第1の複数のデータ要素を有する第1のパック・データおよび第2の複数のデータ要素を有する第2のパック・データの場所を指定する命令を受信しデコードするデコーダであって、前記第1のパック・データの各データ要素が前記第2のパック・データの各データ要素に対応している、デコーダと、そして
    前記デコーダと通信状態にあり、前記デコーダが前記命令をデコードした後で、乗算および加算を実行することによって、パック・データ結果を生成する実行ユニットであって、前記パック・データ結果は複数の結果データ要素を有し、前記複数の結果データ要素の各々は前記第1及び第2のパック・データの対応するデータ要素の積の合計を含んでいる、実行ユニットと
    を備えることを特徴とする演算装置。
  10. 前記実行ユニットが、前記第1のパック・データまたは前記第2のパック・データのどちらかの上に前記パック・データ結果を上書きすることによって記憶することを特徴とする請求項9に記載の装置。
  11. 前記実行ユニットが、前記第1のパック・データの前記データ要素よりも精度の高い結果データ要素を生成することを特徴とする請求項9に記載の装置。
  12. 前記実行ユニットが、前記複数の結果データ要素を合計せずに、前記命令の実行を完了させることを特徴とする請求項9に記載の装置。
  13. 前記デコーダが、命令のビット0から2までが前記第2のパック・データの場所を指定し、前記命令のビット3から5までが前記第1のパック・データの場所を指定する24ビットの命令フォーマットを有する前記命令をデコードすることを特徴とする請求項9に記載の装置。
  14. 前記複数の結果データ要素の前記第1の結果データ要素は前記複数のセットの前記第1のセット内の前記中間データ要素の前記合計を示し、そして
    前記複数の結果データ要素の前記第2の結果データ要素は前記複数のセットの前記第2のセット内の前記中間データ要素の前記合計を示す
    ことを特徴とする請求項5記載の方法。
  15. 上記中間データ要素は対になって複数のセットとなることを特徴とする請求項5記載の方法。
  16. 前記結果データ要素の各々は前記第1および第2パックデータの対応するデータ要素の2つの積の合計を含む、
    ことを特徴とする請求項9記載の装置。
  17. 少なくとも要素A1,A2,A3およびA4を有する第1パックデータを記憶するように動作する第1記憶領域と;
    少なくとも要素B1,B2,B3およびB4を有する第2パックデータを記憶するように動作する第2記憶領域と;
    乗算回路と;
    から構成され:
    上記乗算回路は、上記要素A1を受ける第1記憶領域と上記要素B1を受ける第2記憶領域に結合した第1乗算器と、上記要素A2を受ける第1記憶領域と上記要素B2を受ける第2記憶領域に結合した第1の乗算器と、上記要素A2を受ける第1記憶領域と上記要素B2を受ける第2記憶領域に結合した第2乗算器と、上記要素A3を受ける第1記憶領域と上記要素B3を受ける第2記憶領域に結合した第3乗算器と、上記要素A4を受けるように第1記憶領域と上記要素B4を受けるように第2記憶領域に結合した第4乗算器と、上記第1と第2の乗算器に接続した第1加算器と、第3と第4の乗算器に接続した第2加算器と、第1および第2の加算器に接続した第3記憶領域とから構成されており:上記第3の記憶領域は少くとも第1フィールドと第2フィールドを有し、上記第1フィールドは第3パックデータの第1データ要素として第1加算器の出力を保持し、また第2フィールドは第3パックデータの第2データ要素として第2加算器の出力を保存することを特徴とする演算装置。
  18. 1は16ビット構成であり、第1データ要素は32ビット構成である請求項17記載の装置。
  19. 第1記憶領域又は第2記憶領域のいづれかが第3記憶領域として使用される請求項17記載の装置。
  20. 第1加算器の出力は(A1xB1+A2xB2)である請求項17記載の装置。
  21. 第1のソースに対応し、パック・データを記憶するための第1の記憶装置と、
    第2のソースに対応し、パック・データを記憶するための第2の記憶装置と、
    前記第1のソースを示す第1のフィールドと前記第2のソースを示す第2のフィールドを有する1つ以上の命令フォーマットの第1のセットをデコードするためのデコーダと、
    1つ以上の命令フォーマットの前記第1のセットの第1の命令をデコーダがデコードするのに応答して、第2の記憶領域中に記憶された第2の要素による前記第1の記憶領域中に記憶された第1の要素の乗算の第1の積を、第2の記憶領域中に記憶された第4の要素による前記第1の記憶領域中に記憶された第3の要素の乗算の第2の積と、合計して、第1の結果を生成し、さらに、前記第1の命令をデコーダがデコードするのに応答して、第2の記憶領域中に記憶された第6の要素による前記第1の記憶領域中に記憶された第5の要素の乗算の第3の積を、第2の記憶領域中に記憶された第8の要素による前記第1の記憶領域中に記憶された第7の要素の乗算の第4の積と、合計して、第2の結果を生成する、前記実行ユニットと、そして
    パック・データを記憶し、前記命令によって示された宛先に対応して前記第1および第2の結果を記憶する第3の記憶装置と
    を備えることを特徴とする装置。
JP2005248479A 1995-08-31 2005-08-29 パック・データの乗加算演算を実行する装置 Expired - Lifetime JP4064989B2 (ja)

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 JP2006107463A (ja) 2006-04-20
JP4064989B2 true 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) CN100465874C (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)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1049025B1 (en) * 1998-01-21 2009-08-19 Panasonic Corporation Method and apparatus for arithmetic operations
US7392275B2 (en) 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
US7395302B2 (en) 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
EP2267596B1 (en) * 1999-05-12 2018-08-15 Analog Devices, Inc. Processor core for processing instructions of different formats
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
US7930336B2 (en) * 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
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 中国航天科技集团公司第九研究院第七七一研究所 一种可配置的乘累加运算单元及其构成的乘累加运算阵列
JP6371855B2 (ja) * 2014-03-26 2018-08-08 インテル・コーポレーション プロセッサ、方法、システム、プログラム、及び非一時的機械可読記憶媒体
RU2562411C1 (ru) * 2014-12-10 2015-09-10 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Кубанский государственный технологический университет" (ФГБОУ ВПО "КубГТУ") Устройство для вычисления модуля комплексного числа
RU2653310C1 (ru) * 2017-05-24 2018-05-07 федеральное государственное бюджетное образовательное учреждение высшего образования "Воронежский государственный университет" (ФГБОУ ВО "ВГУ") Устройство для умножения числа по модулю на константу
CN109117114B (zh) * 2018-08-16 2023-06-02 电子科技大学 一种基于查找表的低复杂度近似乘法器
US20220019407A1 (en) * 2020-07-14 2022-01-20 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)

* Cited by examiner, † Cited by third party
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 キヤノン株式会社 整数上の乗算回路

Also Published As

Publication number Publication date
CN100465874C (zh) 2009-03-04
JPH11511577A (ja) 1999-10-05
CA2230108C (en) 2000-12-12
MX9801571A (es) 1998-05-31
IL123241A0 (en) 1998-09-24
CN1549106A (zh) 2004-11-24
JP3750820B2 (ja) 2006-03-01
DE69624578T2 (de) 2003-09-04
EP0847552B1 (en) 2002-10-30
WO1997008610A1 (en) 1997-03-06
DE69624578D1 (de) 2002-12-05
CA2230108A1 (en) 1997-03-06
CN1107905C (zh) 2003-05-07
EP0847552A4 (en) 2000-01-12
AU6951196A (en) 1997-03-19
NO980873L (no) 1998-04-28
HK1012513A1 (en) 1999-08-06
JP2006107463A (ja) 2006-04-20
EP0847552A1 (en) 1998-06-17
NO317739B1 (no) 2004-12-13
HUP9900030A3 (en) 1999-11-29
RU2139564C1 (ru) 1999-10-10
AU717246B2 (en) 2000-03-23
BR9610285A (pt) 1999-03-16
PL325231A1 (en) 1998-07-06
HUP9900030A2 (hu) 1999-04-28
IL123241A (en) 2001-10-31
NO980873D0 (no) 1998-02-27
CN1200821A (zh) 1998-12-02

Similar Documents

Publication Publication Date Title
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置
KR100329339B1 (ko) 압축데이터에의한승산-가산연산수행장치
US5859997A (en) Method for performing multiply-substrate operations on packed data
JP3711147B2 (ja) パック・データを処理する1組の命令
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
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