JPH11511575A - パック・データを処理する1組の命令 - Google Patents

パック・データを処理する1組の命令

Info

Publication number
JPH11511575A
JPH11511575A JP9510252A JP51025297A JPH11511575A JP H11511575 A JPH11511575 A JP H11511575A JP 9510252 A JP9510252 A JP 9510252A JP 51025297 A JP51025297 A JP 51025297A JP H11511575 A JPH11511575 A JP H11511575A
Authority
JP
Japan
Prior art keywords
data
bit
packed
bits
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
Application number
JP9510252A
Other languages
English (en)
Other versions
JP3711147B2 (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
Application filed by Intel Corp filed Critical Intel Corp
Publication of JPH11511575A publication Critical patent/JPH11511575A/ja
Application granted granted Critical
Publication of JP3711147B2 publication Critical patent/JP3711147B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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
    • 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
    • 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
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/607Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49994Sign extension

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Discrete Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Document Processing Apparatus (AREA)
  • Advance Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Complex Calculations (AREA)
  • Containers And Plastic Fillers For Packaging (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

(57)【要約】 典型的なマルチメディア・アプリケーションで必要とされるパック・データに対する演算をサポートする1組の命令をプロセッサに含める装置。本発明は、一実施形態では、記憶域(150)と、デコーダ(165)と、複数の回路(130)とを有するプロセッサを含む。この複数の回路によって、いくつかの命令を実行しパック・データを処理することができる。この実施形態では、これらの命令にパック、アンパック、パック乗算、パック加算、パック減算、パック比較、パック・シフトが含まれる。

Description

【発明の詳細な説明】 パック・データを処理する1組の命令 発明の背景 1.発明の分野 本発明は特に、コンピュータ・システムの分野に関する。詳細には、本発明は パック・データ処理の分野に関する。 2.関連技術の説明 典型的なコンピュータ・システムでは、ある結果を生成する命令を使用して多 数のビット(たとえば、64)で表された値を処理するプロセッサが実装されて いる。たとえば、加算命令を実行すると、第1の64ビット値と第2の64ビッ ト値が加算され、結果が第3の64ビット値として記憶される。しかし、マルチ メディア・アプリケーション(たとえば、CSC(テレビ会議と混合メディア・ データ処理を統合したもの)、2D/3Dグラフィックス、画像処理、ビデオ圧 縮/圧縮解除、認識アルゴリズム、オーディオ処理を目標とするアプリケーショ ン)では、小数のビットで表すことのできる大量のデータを処理する必要がある 。たとえば、通常、グラフィカル・データには8ビットまたは16ビットが必要 であり、音声データには8ビットまたは16ビットが必要である。これらのマル チメディアアプリケーションはそれぞれ、1つまたは複数のアルゴリズムを必要 とし、これらのアルゴリズムはそれぞれ、いくつかの演算を必要とする。たとえ ば、アルゴリズムには加算、比較演算、シフト演算が必要である。 従来技術のプロセッサは、マルチメディア・アプリケーション(ならびに同じ 特徴を有する他のアプリケーション)の効率を向上させるために、パック・デー タ・フォーマットを使用する。パック・データ・フォーマットとは、通常、単一 の値を表すために使用されるビットが、それぞれ、別々の値を表す、いくつかの 固定サイズのデータ要素に分解されるフォーマットである。たとえば、64ビッ ト・レジスタは、それぞれ、別々の32ビット値を表す、2つの32ビット要素 に分解することができる。また、このような従来技術のプロセッサは、これらの パック・データ・タイプの各要素を並行して別々に処理する命令を与える。たと えば、パック加算命令は、第1のパック・データおよび第2のパック・データか ら得た対応するデータ要素を加算する。したがって、マルチメディア・アルゴリ ズムが多数のデータ要素に対して実行しなければならない5つの演算を含むルー プを必要とする場合、データをパックし、パック・データ命令を使用してこれら の演算を並行して実行することが望ましい。このように、このようなプロセッサ はマルチメディア・アプリケーションをより効率的に処理することができる。 しかし、演算のループが、プロセッサではパック・データに対して実行するこ とのできない演算を含む(すなわち、プロセッサに適切な命令が欠落している) 場合、データをアンパックしてその演算を実行する必要がある。たとえば、マル チメディア・アルゴリズムに加算が必要であり、前述のパック加算命令が使用で きない場合、プログラマは第1のパック・データと第2のパック・データの両方 をアンパックし(すなわち、第1のパック・データと第2のパック・データの両 方を含む要素を分離し)、分離された要素どうしを個別に加算し、次いで結果を パックし、パック結果を得て、さらにパック処理できるようにする。そのような パック処理およびアンパック処理を実行するのに必要な処理時間のために、パッ ク・データ・フォーマットを使用することによる性能上の利点が無効になること が多い。したがって、典型的なマルチメディア・アルゴリズムに必要なすべての 演算を与える1組のパック・データ命令を汎用プロセッサ上に組み込むことが望 ましい。しかし、現在のマイクロプロセッサ上ではダイ面積が限られているので 、追加できる命令の数は限られている。 パック・データ命令を含む1つの汎用プロセッサは、Santa Clara ,CaliforniaのIntel Corporationによって製造さ れているi860XPTMプロセッサである。i860XPプロセッサは要素サイ ズの異なるいくつかのタイプのパック・データを含む。また、i860XPプロ セッサはパック加算命令とパック比較命令とを含む。しかし、パック加算命令は 桁上げチェーンを破壊せず、したがってプログラマは、ソフトウェアが実行して い る演算によってオーバフローが生じることがないようにし、すなわち、演算によ ってパック・データ内のある要素のビットがパック・データの次の要素にオーバ フローしないようにする必要がある。たとえば、「11111111」を記憶し ている8ビット・パック・データ要素に値1を加算した場合、オーバフローが起 こり、結果は「100000000」になる。また、i860XPプロセッサに よってサポートされるパック・データ・タイプの小数点の位置は固定される(す なわち、i860XPプロセッサがサポートする8.8数、6.10数、8.2 4数。この場合、i.j数は、i個の最上位ビットと小数点の後のj個のビット を含む)。したがって、プログラマは、表すことのできる値に関して制限される 。i860XPプロセッサはこの2つの命令しかサポートしないので、パック・ データを使用するマルチメディア・アルゴリズムで必要とされる多数の演算を実 行することはできない。 パック・データをサポートする他の汎用プロセッサは、Motorola,I nc.によって製造されているMC88110TMプロセッサである。MC881 10プロセッサは、それぞれの異なるサイズの要素を有するいくつかの異なるパ ック・データ・フォーマットをサポートする。また、MC88110プロセッサ によってサポートされる1組のパック命令には、パックと、アンパックと、パッ ク加算と、パック減算と、パック乗算と、パック比較と、パック・ローテートが 含まれる。 MC88110プロセッサのパック・コマンドは、第1のレジスタ対内の各要 素の(t*r)/64(tはパック・データの要素内のビット数である)個の最 上位ビットを連結して幅rのフィールドを生成することによって動作する。この フィールドは、第2のレジスタ対に記憶されているパック・データの最上位ビッ トに置き換わる。このパック・データは次いで、第3のレジスタ対に記憶され、 左にrビットだけローテートされる。tおよびrに関してサポートされる値の表 と、この命令の処理の例を下記の表1および表示2に示す。 パック命令のこの処理系は2つの欠点を有する。第1の欠点は、命令の終わり でローテートを実行するときに追加論理が必要であることである。 第2の欠点は、パック・データ結果を生成するために必要な命令の数である。 たとえば、4つの32ビット値を使用して(上記で図示した)第3のレジスタの 結果を生成することが望ましい場合、下記の表3に示したようにt=32および r=32を含む2つの命令が必要になる。 MC88110プロセッサのアンパック・コマンドは、パック・データから得 た4ビット・データ要素、8ビット・データ要素、または16ビット・データ要 素を2倍の大きさ(8ビット、16ビット、または32ビット)のデータ内の要 素の下半分に入れ、それらの上位ビットに零を充填することによって動作する。 このアンパック・コマンドの動作の例を表4に示す。 MC88110プロセッサのパック乗算命令は、表5に示したように、パック ・データが単一の値を表す場合と同様に、64ビット・パック・データの各要素 に32ビット値を乗じる。 この乗算命令は2つの欠点を有する。第1に、この乗算命令は桁上げチェーン を破壊しないように、すなわち、プログラマは、パック・データに対して実行さ れる演算によってオーバフローが生じることがないようにしなければならない。 その結果、プログラマは場合によっては、このオーバフローを防止するために追 加命令を含める必要がある。第2に、この乗算命令はパック・データ内の各要素 に単一の値(すなわち、32ビット値)を乗じる。その結果、ユーザがパック・ データ内のどの要素に32ビット値を乗じるかを自由に選択することはできない 。したがって、プログラマは、パック・データ内のあらゆる要素上で同じ乗算が 必要になるようにデータを準備し、あるいはデータ内の一部の要素に対して乗算 が必要になるたびにデータをアンパックして処理時間を浪費しなければならない 。したがって、プログラマは複数のマルチプライヤを並行して使用して複数の乗 算を実行することができなかった。たとえば、それぞれ長さが1ワードの8つの 異なるデータを乗じるには、4回の別々の乗算が必要である。各演算が2つのワ ードを一度に乗じることによって、ビット16よりも上位のビット・に使用され るデータ線および回路が有効に使用される。 MC88110プロセッサのパック比較命令は、第1のパック・データおよび 第2のパック・データから得た対応する32ビット・データ要素どうしを比較す る。2回の比較はそれぞれ、未満(<)と以上(≧)のどちらかを返すことがで き、そのため4つの可能な組合せが得られる。この命令は8ビット結果文字列を 返し、このうちの4ビットは、4つの可能な条件のうちのどれが満たされたかを 示し、4ビットはそれらのビットの補数を示す。この命令の結果に対する条件付 き分岐は、1)条件付き分岐のシーケンスを用い、あるいは2)ジャンプ・テー ブルを用いる2つの方法で実施することができる。この命令に関する問題は、i f Y>A then X=X+B else X=Xなどの関数を実行すると きにデータに基づく条件付き分岐が必要であることである。この関数の擬似コー ドコンパイル済み表現は下記のとおりである。 新しいマイクロプロセッサは、分岐がどこへ進むかをスペキュラティブに予想す ることによって実行を加速しようとする。予想が正しい場合、性能は失われず、 性能が向上する可能性がある。しかし、予想が誤っている場合、性能が失われる 。したがって、予想を正しく行うための誘因は大きい。しかし、(上記のような )データに基づく分岐は、予想アルゴリズムを破壊し、さらに誤った予想を生じ させる予想できない方法で動作する。そのため、この比較命令を使用してデータ に対する条件付き分岐をセットアップすると、性能が著しく低下する。 MC88110プロセッサのローテート命令は、64ビット値を0ビットと6 0ビットとの間のモジュロ4へローテートさせる(たとえば、下記の表6を参照 されたい)。 ローテート命令では、レジスタからシフトされた上位ビットがレジスタの下位ビ ットにシフトされるので、MC88110プロセッサはパック・データ内の各要 素を個別にシフトさせることはサポートしない。そのため、パック・データ・タ イプ内の各要素を個別にシフトさせる必要があるプログラミング・アルゴリズム では、1)データをアンパックし、2)各要素に対するシフトを個別に実行し、 3)結果をパックした結果パック・データを得て、さらにパック・データ処理で きるようにする必要がある。 発明の概要 典型的なマルチメディア・アプリケーションで必要とされる演算をサポートす る1組のパック・データ命令をプロセッサに含める方法および装置について説明 する。一実施態様では、本発明はプロセッサと記憶領域とを含む。記憶領域は、 パック・データを処理するためにプロセッサによって実行されるいくつかの命令 を含む。この実施態様では、これらの命令には、パックと、アンパックと、パッ ク加算と、パック減算と、パック乗算と、パック・シフトと、パック比較が含ま れる。 プロセッサは、パック命令を受け取ったことに応答して、少なくとも2つのパ ック・データ内のデータ要素から得たビットの一部をパックし、第3のパック・ データを形成する。これに対して、プロセッサは、アンパック命令を受け取った ことに応答して、第1のパック・データ・オペランドから得た少なくとも1つの データ要素と第2のパック・データ・オペランドから得た少なくとも1つの対応 するデータ要素とを含む第4のパック・データを生成する。 プロセッサは、パック加算命令を受け取ったことに応答して、少なくとも2つ のパック・データから得た対応するデータ要素を並行して別々に加算する。これ に対して、プロセッサは、パック減算命令を受け取ったことに応答して、少なく とも2つのパック・データから得た対応するデータ要素を並行して別々に減算す る。 プロセッサは、パック乗算命令を受け取ったことに応答して、少なくとも2つ のパック・データから得た対応するデータ要素を並行して別々に乗算する。 プロセッサは、パック・シフト命令を受け取ったことに応答して、パック・デ ータ・オペランド内の各データ要素を、指示されたカウントだけ並行して別々に シフトする。 プロセッサは、パック比較命令を受け取ったことに応答して、指示された関係 に従って少なくとも2つのパック・データから得た対応するデータ要素を並行し て別々に比較し、この結果としてパック・マスクを第1のレジスタに記憶する。 パック・マスクは、少なくとも第1のマスク要素と第2のマスク要素とを含む。 第1のマスク要素内の各ビットは1組の対応するデータ要素を比較した結果を示 し、それに対して、第2のマスク要素内の各ビットは第2の1組のデータ要素を 比較した結果を示す。 図面の簡単な説明 本発明を制限ではなく一例として図示する。同じ参照符号は同様な要素を示す 。 第1図は、本発明の一実施形態による例示的なコンピュータ・システムを示す 図である。 第2図は、本発明の一実施形態によるプロセッサのレジスタ・ファイルを示す 図である。 第3図は、本発明の一実施形態によってデータを処理するためにプロセッサに よって使用される一般的なステップを示す流れ図である。 第4図は、本発明の一実施形態によるパック・データ・タイプを示す図である 。 第5a図は、本発明の一実施形態によるレジスタ内パック・データ表現を示す 図である。 第5b図は、本発明の一実施形態によるレジスタ内パック・データ表現を示す 図である。 第5c図は、本発明の一実施形態によるレジスタ内パック・データ表現を示す 図である。 第6a図は、本発明の一実施形態によるパック・データの使用法を示す制御信 号フォーマットを示す図である。 第6b図は、本発明の一実施形態によるパック・データの使用法を示す第2の 制御信号フォーマットを示す図である。パック加減算 第7a図は、本発明の一実施形態によってパック加算を実行する方法を示す図 である。 第7b図は、本発明の一実施形態によってパック減算を実行する方法を示す図 である。 第8図は、本発明の一実施形態によってパック・データの個別のビットに対し てパック加算およびパック減算を実行する回路を示す図である。 第9図は、本発明の一実施形態によってパック・バイト・データに対してパッ ク加算およびパック減算を実行する回路を示す図である。 第10図は、本発明の一実施形態によってパック・ワード・データに対してパ ック加算およびパック減算を実行する回路を示す論理図である。 第11図は、本発明の一実施形態によってパック・ダブルワード・データに対 してパック加算およびパック減算を実行する回路を示す論理図である。パック乗算 第12図は、本発明の一実施形態によってパック・データに対してパック乗算 を実行する方法を示す流れ図である。 第13図は、本発明の一実施形態によってパック乗算を実行する回路を示す図 である。乗算−加減算 第14図は、本発明の一実施形態によってパック・データに対して乗算加算お よび乗算減算を実行する方法を示す流れ図である。 第15図は、本発明の一実施形態によってパック・データに対して乗算加算ま たは乗算減算、あるいはその両方を実行する回路を示す図である。パック・シフト 第16図は、本発明の一実施形態によってパック・データに対してパック・シ フト演算を実行する方法を示す流れ図である。 第17図は、本発明の一実施形態によってパック・データの個別のバイトに対 してパック・シフトを実行する回路を示す流れ図である。パック 第18図は、本発明の一実施形態によってパック・データに対してパック演算 を実行する方法を示す流れ図である。 第19a図は、本発明の一実施形態によってパック・バイト・データに対して パック演算を実行する回路を示す図である。 第19b図は、本発明の一実施形態によってパック・ワード・データに対して パック演算を実行する回路を示す図である。アンパック 第20図は、本発明の一実施形態によってパック・データに対してアンパック 演算を実行する方法を示す流れ図である。 第21図は、本発明の一実施形態によってパック・データに対してアンパック 演算を実行する回路を示す図である。ポピュレーション・カウン 第22図は、本発明の一実施形態によってパック・データに対してポピュレー ション・カウント演算を実行する方法を示す流れ図である。 第23図は、本発明の一実施形態によって、パック・データのあるデータ要素 に対してポピュレーション・カウント演算を実行し結果パック・データ用の単一 の結果データ要素を生成する方法を示す流れ図である。 第24図は、本発明の一実施形態によって、4つのワード・データ要素を有す るパック・データに対してポピュレーション・カウント演算を実行する回路を示 す図である。 第25図は、本発明の一実施形態によってパック・データの1つのワード・デ ータ要素に対してポピュレーション・カウント演算を実行する詳細な回路を示す 図である。パック論理演算 第26図は、本発明の一実施形態によってパック・データに対していくつかの 論理演算を実行する方法を示す流れ図である。 第27図は、本発明の一実施形態によってパック・データに対して論理演算を 実行する回路を示す図である。パック比較 第28図は、本発明の一実施形態によってパック・データに対してパック比較 演算を実行する方法を示す流れ図である。 第29図は、本発明の一実施形態によってパック・データの個別のバイトに対 してパック比較演算を実行する回路を示す図である。 詳細な説明 本出願は、典型的なマルチメディア・アプリケーションで必要とされるパック ・データに対する演算をサポートする1組の命令をプロセッサに含める方法およ び装置について説明するものである。下記の説明では、本発明を完全に理解して いただくために多数の特定の詳細について述べる。しかし、これらの特定の詳細 なしに本発明を実施できることが理解されよう。他の例では、本発明を不必要に 曖昧にしないように、周知の回路、構造、技法は詳しく示していない。 定義 本発明の実施形態の説明を理解するための基礎として、下記の定義を与える。 ビットXないしビットY: バイナリ数のサブフィールドを定義する。たとえば、バイト001110102 (基数2で示されている)のビット0からビット6までは、サブフィールド1 110102を表す。バイナリ数の後に続く「2」は基数2を表す。したがって 、10002は810に等しく、それに対してF16は1510に等しい。 Rx: レジスタ。レジスタとは、データを記憶し与えることができる装置である。レ ジスタの他の機能については下記で説明する。レジスタは必ずしもプロセッサの パッケージの一部ではない。 SRC1,SRC2、DEST: 記憶領域を識別する(たとえば、メモリ・アドレス、レジスタなど) ソース1−iおよび結果1−i: データを表す。 コンピュータ・システム 第1図は、本発明の一実施形態による例示的なコンピュータ・システム100 を示す。コンピュータ・システム100は、バス101、または情報を伝達する その他の通信ハードウェアおよびソフトウェアと、情報を処理するためにバス1 01に結合されたプロセッサ109とを含む。プロセッサ109は、CISC形 アーキテクチャやRISC形アーキテクチャを含め任意のタイプのアーキテクチ ャの中央演算処理装置を表す。コンピュータ・システム100はさらに、プロセ ッサ109が実行すべき情報および命令を記憶するためにバス101に結合され たランダム・アクセス・メモリ(RAM)またはその他の動的記憶装置(メイン ・メモリ104と呼ぶ)を含む。メイン・メモリ104は、プロセッサ109に よる命令の実行時に一時変数またはその他の中間情報を記憶するために使用する こともできる。コンピュータ・システム100は、プロセッサ109に関する静 的情報および命令を記憶するためにバス101に結合された読取り専用メモリ( ROM)106またはその他の静的記憶装置、あるいはその両方も含む。データ 記憶装置107は情報および命令を記憶するためにバス101に結合される。 第1図は、プロセッサ109が実行装置130と、レジスタ・ファイル150 と、キャッシュ160と、デコーダ165と、内部バス170とを含むことも示 す。もちろん、プロセッサ109は、本発明を曖昧にしないように図示されてい ない追加回路を含む。 実行装置130は、プロセッサ109が受け取った命令を実行するために使用 される。実行装置130は、汎用プロセッサで通常実施される命令を認識するだ けでなく、パック・データ・フォーマットに対する演算を実行するためにパック 命令セット140内の命令を認識する。一実施形態では、パック命令セット14 0は、パック演算、アンパック演算、パック加算、パック乗算、パック・シフト 演算、パック比較演算、乗算加算、乗算減算、ポピュレーション・カウント演算 、1組のパック論理演算(パックANDと、パックANDNOTと、パックOR と、パックXORを含む)を下記で説明するようにサポートする命令を含む。パ ック命令セット140がこれらの命令を含む一実施形態について説明するが、代 替実施形態は、これらの命令のサブセットまたはスーパーセットを含むことがで きる。 これらの命令を含めることによって、マルチメディア・アプリケーションで使 用される多数のアルゴリズムで必要とされる演算を、パック・データを使用して 実行することができる。したがって、パック・データをアンパックして1つのデ ータ要素に対して一度に1つまたは複数の演算を実行する必要なしに、必要なデ ータをパックし、そのパック・データに対して必要な演算を実行するようにアル ゴリズムを書くことができる。前述のように、この場合、ある種のマルチメディ ア・アルゴリズムで必要とされるパック・データ演算をサポートしない従来技術 の汎用プロセッサに対する性能上の利点が与えられる。すなわち、マルチメディ ア・アルゴリズムが、パック・データに対して実行できない演算を必要とする場 合、プログラムはデータをアンパックし、別々の要素に対して個別に演算を実行 し、次いで結果をパックしてパック結果を得て、さらにパック処理できるように しなければならない。また、これらの命令のうちのいくつかが実行される開示し た方法では、多数のマルチメディア・アプリケーションの性能が向上する。 実行装置130は、内部バス170によってレジスタ・ファイル150に結合 される。レジスタ・ファイル150は、データを含む情報を記憶するためのプロ セッサ109上の記憶領域を表す。本発明の一態様が、パック・データを処理す る前述の命令セットであることを理解されたい。本発明のこの態様によれば、パ ック・データを記憶するために使用される記憶領域は重大ではない。しかし、レ ジスタ・ファイル150の一実施形態については下記で第2図を参照して説明す る。実行装置130はキャッシュ160およびデコーダ165に結合される。キ ャッシュ160は、たとえばメイン・メモリ104からのデータまたは制御信号 、あるいはその両方をキャッシュするために使用される。デコーダ165は、プ ロセッサ109が受け取った命令を制御信号またはマイクロコード入口点として 復号するために使用される。実行装置130は、このような制御信号またはマイ クロコード入口点に応答して、適切な演算を実行する。たとえば、加算命令を受 け取った場合、デコーダ165は実行装置130に必要な加算を実行させ、減算 命令を受け取った場合、デコーダ165は実行装置130に必要な減算を実行さ せ、以下同様である。デコーダ165は、いくつかの異なる機構(たとえば、参 照テーブル、ハードウェア処理系、PLAなど)を使用して実装される。したが って、デコーダおよび実行装置による様々な命令の実行は一連のif/then 文で表されるが、このようなif/then文のシリアル処理の必要なしに命令 を実行できることが理解されよう。このif/then処理を論理的に実行する 機構は本発明の範囲内であるとみなされる。 第1図は、磁気ディスクや光ディスクなどのデータ記憶装置107と、それに 対応するディスク・ドライブも示す。コンピュータ・システム100をバス10 1を介して表示装置121に結合し、コンピュータ・ユーザに情報を表示するこ ともできる。表示装置121は、フレーム・バッファ、または特殊グラフィック ス・レンダリング装置、または陰極線管(CRT)、またはフラット・パネル・ ディスプレイ、あるいはそれらの組合せを含むことができる。英数字入力装置1 22は、英数字キーとその他のキーを含み、通常、選択された情報およびコマン ドをプロセッサ109に伝達するためにバス101に結合される。他のタイプの ユーザ入力装置は、選択された方向情報およびコマンドをプロセッサ109に伝 達し、表示装置121上のカーソルの移動を制御するマウスや、トラックボール や、ペンや、タッチ・スクリーンや、カーソル方向キーなどのカーソル・コント ロール123である。この入力装置は通常、2つの軸、すなわち第1の軸(たと えば、x)と第2の軸(たとえば、y)において2自由度を有し、それによって 平面内の位置を指定することができる。しかし、本発明は2自由度のみを含む入 力装置には限らない。 バス101に結合できる他の装置は、紙、フィルム、または同様なタイプの媒 体上に命令、データ、またはその他の情報を印刷するために使用できるハード・ コピー装置124である。コンピュータ・システム100は、録音用装置、また は情報を記録するためにマイクロフォンに結合されたオーディオ・ディジタイザ などの再生装置125、あるいはその両方に結合することもできる。さらに、こ の装置は、ディジタル化音声を再生するためにディジタル・アナログ(D/A) 変換器に結合されたスピーカを含むことができる。 コンピュータ・システム100はコンピュータ・ネットワーク(たとえば、L AN)内の端末であってもよい。コンピュータ・システム100はその場合、コ ンピュータ・ネットワークのコンピュータ・サブシステムである。コンピュータ ・システム100は任意選択でビデオ・ディジタル化装置126を含む。ビデオ ・ディジタル化装置126を使用して、コンピュータ・ネットワーク上の他のユ ーザへ伝送できるビデオ画像を取り込むことができる。 一実施形態では、プロセッサ109は、x86命令セット(Santa Cl ara,CaliforniaのIntel Corporationによって 製造されているPentium(R)プロセッサなど既存のマイクロプロセッサで 使用されている命令セット)と互換性のある命令セットもサポートする。したが って、一実施形態では、プロセッサ109は、Santa Clara,Cal iforniaのIntel Corporationによって定義されたIATM −Intel Architectureでサポートされるすべての演算をサ ポートする(Santa Clara,CaliforniaのIntelから 入手可能なMicroprocessors、Intel Data Book s第1巻および第2巻(1992年および1993年)を参照されたい)。その ため、プロセッサ109は本発明の演算だけでなく既存のx86演算もサポート することができる。本発明をx86ベースの命令セットに組み込まれるものとし て説明しているが、代替実施形態は本発明を他の命令セットに組み込むことがで きる。たとえば、本発明は、新しい命令セットを使用する64ビット・プロセッ サに組み込むことができる。 第2図は、本発明の一実施形態によるプロセッサのレジスタ・ファイルを示す 。 レジスタ・ファイル150は、制御/状況情報、整数データ、浮動小数点データ 、パック・データを含む情報を記憶するために使用される。第2図に示した実施 形態では、レジスタ・ファイル150は整数レジスタ201と、レジスタ209 と、状況レジスタ208と、命令ポインタ・レジスタ211とを含む。状況レジ スタ208はプロセッサ109の状況を示す。命令ポインタ・レジスタ211は 、次に実行すべき命令のアドレスを記憶する。整数レジスタ201、レジスタ2 09、状況レジスタ208、命令ポインタ・レジスタ211はすべて内部バス1 70に結合される。任意の追加レジスタも内部バス170に結合される。 一実施形態では、レジスタ209はパック・データと浮動小数点データの両方 に使用される。そのような一実施形態では、プロセッサ109は、任意の所与の 時間に、レジスタ209をスタック参照浮動小数点レジスタと非スタック参照パ ック・データ・レジスタのどちらかとして扱わなければならない。この実施形態 には、スタック参照浮動小数点レジスタとしてのレジスタ209の処理と非スタ ック参照パック・データ・レジスタとしてのレジスタ209の処理との間でプロ セッサ109を切り換えられるようにする機構が含まれる。他の実施形態では、 プロセッサ109はレジスタ209を非スタック参照浮動小数点レジスタおよび 非スタック参照パック・データ・レジスタとして同時に処理することができる。 他の例として、他の実施形態では、これらの同じレジスタを使用して整数データ を記憶することができる。 もちろん、これよりも多くあるいは少ない数の組のレジスタを含む代替実施形 態を実施することができる。たとえば、代替実施形態では、浮動小数点データを 記憶する独立した1組の浮動小数点レジスタを含むことができる。他の例として 、代替実施形態は、それぞれ、制御/状況情報を記憶する、第1の1組のレジス タと、それぞれ、整数、浮動小数点、パック・データを記憶することができる、 第2の1組のレジスタとを含むことができる。話を明確にするために、実施形態 のレジスタは、意味のうえで特定のタイプの回路に制限すべきではない。実施形 態のレジスタはデータを記憶して与え、本明細書で説明する機能を実行できるだ けでよい。 いくつかの異なる数のレジスタまたはいくつかの異なるサイズのレジスタ、あ るいはその両方を含む様々な数組のレジスタ(たとえば、整数レジスタ201、 レジスタ209)を実装することができる。たとえば、一実施形態では、32ビ ットを記憶するために整数レジスタ201が実装され、8ビットを記憶するため にレジスタ209が実装される(すべての8ビットは浮動小数点データを記憶す るために使用され、それに対してパック・データには64ビットのみが使用され る)。レジスタ209は8つのレジスタR0212aないしR7212hも含む。 R1212a、R2212b、R3212cはレジスタ209内の個別のレジスタ の例である。あるレジスタ209の32ビットをある整数レジスタ201内へ移 動させることができる。同様に、整数レジスタ内の値をあるレジスタ209の3 2ビット内へ移動させることができる。他の実施形態では、整数レジスタ201 はそれぞれ、64ビットを含み、64ビット・データを整数レジスタ201とレ ジスタ209との間で移動させることができる。 第3図は、本発明の一実施形態によってデータを処理するためにプロセッサに よって使用される一般的なステップを示す流れ図である。たとえば、このような 演算には、レジスタ・ファイル150内のレジスタにキャッシュ160、メイン ・メモリ104、読取り専用メモリ(ROM)106、またはデータ記憶装置1 07からのデータをロードするロード演算が含まれる。 ステップ301で、デコーダ202はキャッシュ160とバス101のどちら かから制御信号207を受け取る。デコーダ202は制御信号を復号し、実行す べき演算を判定する。 ステップ302で、デコーダ202はレジスタ・ファイル150、またはメモ リ内の位置にアクセスする。レジスタ・ファイル150内のレジスタ、またはメ モリ内のメモリ位置は、制御信号207に指定されたレジスタ・アドレスに応じ てアクセスされる。たとえば、パック・データに対する演算では、制御信号20 7はSRC1レジスタ・アドレスと、SRC2レジスタ・アドレスと、DEST レジスタ・アドレスとを含むことができる。SRC1は第1のソース・レジスタ のアドレスである。SRC2は第2のソース・レジスタのアドレスである。すべ ての演算で2つのソース・アドレスが必要であるわけではないので、いくつかの ケースではSRC2は任意選択である。演算にSRC2アドレスが必要でない場 合、SRC1アドレスのみが使用される。DESTは、結果データが記憶される 宛先レジスタのアドレスである。一実施形態では、SRC1またはSRC2がD ESTとしても使用される。SRC1、SRC2、DESTについては第6a図 および第6b図に関して詳しく説明する。対応するレジスタに記憶されているデ ータをそれぞれ、ソース1、ソース2、結果と呼ぶ。これらのデータはそれぞれ 、長さが64ビットである。 本発明の他の実施形態では、SRC1、SRC2、DESTのどれかあるいは すべてが、プロセッサ109のアドレス可能なメモリ空間内のメモリ位置を定義 することができる。たとえば、SRC1はメイン・メモリ104内のメモリ位置 を識別することができ、それに対してSRC2は整数レジスタ201内の第1の レジスタを識別し、DESTはレジスタ209内の第2のレジスタを識別する。 本明細書の説明を簡単にするために、本発明をレジスタ・ファイル150のアク セスに関して説明する。しかし、このようなアクセスをメモリに対して行うこと ができる。 ステップ303で、実行装置130がイネーブルされ、アクセスされたデータ に対する演算を実行する。ステップ304で、結果が、制御信号207の要件に 応じて再びレジスタ・ファイル150に記憶される。 データ・フォーマットおよび記憶フォーマット 第4図は、本発明の一実施形態によるパック・データ・タイプを示す。パック ・バイト401、パック・ワード402、パック・ダブルワード403の3つの パック・データ・フォーマットが示されている。パック・バイトは、本発明の一 実施形態では、長さが64ビットであり8つのデータを含む。各データ要素の長 さは1バイトである。一般に、データ要素とは、同じ長さの他のデータ要素と共 に単一のレジスタ(またはメモリ位置)に記憶される個別のデータである。本発 明の一実施形態では、レジスタに記憶されるデータ要素の数は、64ビットをデ ータ要素のビット単位の長さで除した値である。 パック・ワード402は長さが64ビットであり、4つのワード402データ 要素を含む。各ワード402データ要素は16ビットの情報を含む。 パック・ダブルワード403は長さが64ビットであり、2つのダブルワード 403データ要素を含む。各ダブルワード403データ要素は32ビットの情報 を含む。 第5a図ないし第5c図は、本発明の一実施形態によるレジスタ内パック・デ ータ記憶表現を示す。符号なしパック・データ・レジスタ内表現510は、レジ スタR0212aないしR7212hのうちの1つでの符号なしパック・バイト4 01の記憶を示す。各バイト・データ要素ごとの情報は、バイト0ではビット7 ないしビット0に記憶され、バイト1ではビット15ないしビット8に記憶され 、バイト2ではビット23ないしビット16に記憶され、バイト3ではビット3 1ないしビット24に記憶され、バイト4ではビット39ないしビット32に記 憶され、バイト5ではビット47ないしビット40に記憶され、バイト6ではビ ット55ないしビット48に記憶され、バイト7ではビット63ないしビット5 6に記憶される。したがって、レジスタ内のすべての利用可能なビットが使用さ れる。この記憶構成はプロセッサの記憶効率を向上させる。同様に、8つのデー タ要素にアクセスする場合、8つのデータ要素に対して1つの演算を同時に実行 することができる。符号付きパック・バイト・レジスタ内表現511は符号付き パック・バイト401の記憶を示す。符号インジケータにはあらゆるバイト・デ ータ要素の8ビットしか必要とされないことに留意されたい。 符号なしパック・ワード・レジスタ内表現512は、あるレジスタ209内に ワード3ないしワード0がどのように記憶されるかを示す。ビット15ないしビ ット0はワード0に関するデータ要素情報を含み、ビット32ないしビット16 はデータ要素ワード1に関する情報を含み、ビット37ないしビット32はデー タ要素ワード2に関する情報を含み、ビット63ないしビット48はデータ要素 ワード3に関する情報を含む。符号付きパック・ワード・レジスタ内表現513 は符号なしパック・ワード・レジスタ内表現514に類似している。符号インジ ケータに各ワード・データ要素の16ビットしか必要とされないことに留意され たい。 符号なしパック・ダブルワード・レジスタ内表現514は、レジスタ209が どのように2つのダブルワード・データ要素を記憶するかを示す。ダブルワード 0はレジスタのビット31ないしビット0に記憶される。ダブルワード1はレジ スタのビット63ないしビット32に記憶される。符号付きパック・ダブルワー ド・レジスタ内表現515は符号なしパック・ダブルワード・レジスタ内表現5 14に類似している。必要な符号ビットがダブルワード・データ要素の32番目 のビットであることに留意されたい。 前述のように、レジスタ209はパック・データと浮動小数点データの両方に 使用することができる。本発明のこの実施形態では、アドレスされたレジスタ、 たとえばR0212aがパック・データを記憶しているか、それとも浮動小数点 データを記憶しているかを追跡するために個別のプログラミング・プロセッサ1 09が必要になることがある。代替実施形態では、プロセッサ109はレジスタ 209内の個別のレジスタに記憶されているデータのタイプを追跡することがで きる。その場合、この代替実施形態は、たとえば浮動小数点データに対して加算 が試みられた場合にエラーを生成する恐れがある。 制御信号フォーマット 下記で、パック・データを処理するためにプロセッサ109によって使用され る制御信号フォーマットの一実施形態について説明する。本発明の一実施形態で は、制御信号を32ビットとして表される。デコーダ202はバス101から制 御信号207を受け取ることができる。他の実施形態では、デコーダ202はキ ャッシュ160からそのような制御信号を受け取ることもできる。 第6a図は、本発明の一実施形態によるパック・データの使用法を示す制御信 号フォーマットを示す。ビット31ないしビット36の演算フィールドOP60 1は、たとえばパック加算、パック減算など、プロセッサ109によって実行す べき演算に関する情報を与える。ビット25ないしビット20のSRC1 60 2は、あるレジスタ209のソース・レジスタ・アドレスを与える。このソース ・レジスタは制御信号の実行時に使用すべき第1のパック・データ、すなわちソ ース1を含む。同様に、ビット19ないしビット14のSRC2 603はある レジスタ209のアドレスを含む。この第2のソース・レジスタは演算の実行時 に使用すべきパック・データ、すなわちソース2を含む。ビット5ないしビット 0のDEST605はあるレジスタ209のアドレスを含む。この宛先レジスタ は、パック・データ演算の結果パック・データ、すなわち結果を記憶する。 ビット12とビット13の制御ビットSZ610は、第1と第2のパック・デ ータ・ソース・レジスタ内のデータ要素の長さを示す。SZ610が012に等 しい場合、パック・データはパック・バイト401としてフォーマットされる。 SZ610が102に等しい場合、パック・データはパック・ワード402とし てフォーマットされる。しかし、他の実施形態では、002または112に等しい SZ610が予約され、これらの値のうちの一方を使用してパック・ダブルワー ド403を示すことができる。 ビット11の制御ビットT611は、飽和モードを用いて演算を実行するかど うかを示す。T611が1に等しい場合、飽和演算が実行される。T611が零 に等しい場合、飽和演算が実行される。飽和演算については下記で説明する。 ビット10の制御ビットS612は符号付き演算の使用を示す。S612が1 に等しい場合は、符号付き演算が実行される。S612が0に等しい場合は、符 号なしの演算が実行される。 第6b図は、本発明の一実施形態によるパック・データの使用法を示す第2の 制御信号フォーマットを示す。このフォーマットは、Intel Corpor ation、Literature Sales(P.O.Box7641、M t.prospect、IL、60056−7641)から市販されている「P entium Processor Family User’s Manua l」に記載された一般的な整数命令コード・フォーマットに対応する。OP60 1、SZ610、T611、S612がすべて1つの大きなフィールドとして組 み合わされることに留意されたい。いくつかの制御信号では、ビット3ないしビ ット5はSRC1 602である。SRC1 602アドレスがある一実施形態 では、ビット3ないしビット5はDEST605に対応する。SRC2 603 アドレスがある代替実施形態では、ビット0ないしビット2もDEST605に 対応する。他の制御信号では、パック・シフト即値演算と同様に、ビット3ない しビット5は命令コード・フィールドへのエクステンションを表す。一実施形態 では、このエクステンションによって、プログラマは、シフト・カウント値など 制御信号を含む即値を含めることができる。一実施形態では、この即値は制御信 号の後に続く。これは、「Pentium Processor Famlly User’s Manual」の付録F、F−1ページないしF−3ページに 詳しく記載されている。ビット0〜2はSRC2 603を表す。この一般的な フォーマットによって、レジスタ間アドレス指定、メモリ・レジスタ間アドレス 指定、レジスタ・バイ・メモリ・アドレス指定、レジスタ・バイ・レジスタ・ア ドレス指定、レジスタ・バイ即値アドレス指定、レジスタ・メモリ間アドレス指 定が可能になる。一実施形態では、この一般的なフォーマットは整数レジスタ・ レジスタ間アドレス指定とレジスタ整数レジスタ間アドレス指定をサポートする こともできる。 飽和/非飽和の説明 前述のように、T611は演算が任意選択で飽和するかどうかを示す。飽和が イネーブルされた状態で、演算の結果がデータの範囲に対してオーバフローまた はアンダーフローした場合、結果はクランプされる。クランプとは、結果が範囲 の最大値または最小値を超えた場合に結果を最大値または最小値に設定すること を意味する。アンダーフローの場合、飽和によって結果が範囲内の最低値にクラ ンプされ、オーバフローの場合は最高値にクランプされる。各データ・フォーマ ットの許容範囲を表7に示す。 前述のように、T611は、飽和演算が実行されるかどうかを示す。したがっ て、符号なしデータ・フォーマットを使用すると、演算の結果=258であり、 飽和がイネーブルされている場合、結果は演算の宛先レジスタに記憶される前に 255にクランプされる。同様に、演算の結果=−32999であり、プロセッ サ109が飽和をイネーブルした状態で符号付きワード・データ・フォーマット を使用した場合、結果は演算の宛先レジスタに記憶される前に−32768にク ランプされる。 パック加算 パック加算演算 本発明の一実施形態では、実行装置130でパック加算を実行することができ る。すなわち、本発明では、第1のパック・データの各データ要素を個別に、第 2のパック・データの各データ要素に加算することができる。 第7a図は、本発明の一実施形態によってパック加算を実行する方法を示す。 ステップ701で、デコーダ202は、プロセッサ109から受け取った制御信 号207を復号する。したがって、デコーダ202はパック加算に関する命令コ ードと、レジスタ209内のSRC1 602アドレス、SRC2 603アド レス、DEST605アドレスと、パック・データ内のデータの飽和/不飽和、 符号付き/符号なし、長さを復号する。ステップ702で、デコーダ202は、 SRC1 602アドレスおよびSRC2 603アドレスが与えられた場合に 、内部バス170を介してレジスタ・ファイル150内のレジスタ209にアク セスする。レジスタ209は、レジスタのこれらのアドレスに記憶されているパ ック・データ、すなわちそれぞれソース1およびソース2を実行装置130に与 える。すなわち、レジスタ209はパック・データを内部バス170を介して実 行装置130に伝達する。 ステップ703で、デコーダ202は実行装置130がパック加算を実行でき るようにする。デコーダ202はさらに、パック・データ要素の長さ、飽和を使 用するかどうか、符号付き演算を使用するかどうかを内部バス170を介して伝 達する。ステップ704で、データ要素の長さによって、どのステップを次に実 行するかが決定される。パック・データ内のデータ要素の長さが8ビットである (バイト・データ)場合、実行装置130はステップ705aを実行する。しか し、パック・データ内のデータ要素の長さが16ビットである(ワード・データ ) 場合、実行装置130はステップ705aを実行する。本発明の一実施形態では 、8ビット・データ要素長および16ビット・データ要素長のパック加算しかサ ポートされない。しかし、代替実施形態は異なる長さまたは他の長さをサポート することができる。たとえば、代替実施形態では32ビット・データ要素長のパ ック加算をサポートすることもできる。 データ要素の長さが8ビットであると仮定した場合、ステップ705aが実行 される。実行装置130はSRC2のビット7ないしビット0にソース1のビッ ト7ないしビット0を加算し、結果パック・データのビット7ないしビット0を 生成する。この加算と並行して、実行装置130はソース2のビット15ないし ビット8にソース1のビット15ないしビット8を加算し、結果パック・データ のビット15ないしビット8を生成する。これらの加算と並行して、実行装置1 30はソース2のビット23ないしビット16にソース1のビット23ないしビ ット16を加算し、結果パック・データのビット23ないしビット16を生成す る。これらの加算と並行して、実行装置130はソース2のビット31ないしビ ット24にソース1のビット31ないしビット24を加算し、結果パック・デー タのビット31ないしビット24を生成する。これらの加算と並行して、実行装 置130はソース2のビット39ないしビット32にソース1のビット39ない しビット32を加算し、結果パック・データのビット39ないしビット32を生 成する。これらの加算と並行して、実行装置130はソース2のビット47ない しビット40にソース1のビット47ないしビット40を加算し、結果パック・ データのビット47ないしビット40を生成する。これらの加算と並行して、実 行装置130はソース2のビット55ないしビット48にソース1のビット55 ないしビット48を加算し、結果パック・データのビット55ないしビット48 を生成する。これらの加算と並行して、実行装置130はソース2のビット63 ないしビット56にソース1のビット63ないしビット56を加算し、結果パッ ク・データのビット63ないしビット56を生成する。 データ要素の長さが16ビットであると仮定した場合、ステップ705bが実 行される。実行装置130はSRC2のビット15ないしビット0にソース1の ビット15ないしビット0を加算し、結果パック・データのビット15ないしビ ット0を生成する。この加算と並行して、実行装置130はソース2のビット3 1ないしビット16にソース1のビット31ないしビット16を加算し、結果パ ック・データのビット31ないしビット16を生成する。これらの加算と並行し て、実行装置130はソース2のビット47ないしビット32にソース1のビッ ト47ないしビット32を加算し、結果パック・データのビット47ないしビッ ト32を生成する。これらの加算と並行して、実行装置130はソース2のビッ ト63ないしビット48にソース1のビット63ないしビット48を加算し、結 果パック・データのビット63ないしビット48を生成する。 ステップ706で、デコーダ202は、宛先レジスタのDEST605アドレ スを含むあるレジスタ209をイネーブルする。したがって、結果は、DEST 605からアドレスされるレジスタに記憶される。 表8aは、パック加算のレジスタ内表現を示す。第1のビット行はソース1パ ック・データのパック・データ表現である。第2のビット行はソース2パック・ データのパック・データ表現である。第3のビット行は結果パック・データのパ ック・データ表現である。各データ要素の下方の数はデータ要素番号である。た とえば、ソース1データ要素0は100010002である。したがって、デー タ要素の長さが8ビットであり(バイト・データ)、符号なし不飽和加算を実行 する場合、実行装置130は図のような結果パック・データを生成する。 本発明の一実施形態では、結果がオーバフローまたはアンダーフローし、演算 が不飽和演算を使用し、結果が単に打ち切られることに留意されたい。すなわち 、桁上げビットは無視される。たとえば、表8aでは、結果データ要素1のレジ スタ内表現は100010002+100010002=000010002であ る。同様に、アンダーフローの場合、結果は打ち切られる。この打ち切り形式に よって、プログラマは容易にモジュール演算を実行することができる。たとえば 、結果データ要素1の数式は(ソース1データ要素1+ソース2データ要素1) mod256=結果データ要素1として表すことができる。さらに、当業者なら 、この説明から、状況レジスタ内にエラー・ビットをセットすることによってオ ーバフローおよびアンダーフローを検出できることが理解されよう。 表8bは、パック・ワード・データ加算のレジスタ内表現を示す。したがって 、データ要素の長さが16ビットであり(ワード・データ)、符号なし不飽和加 算を実行する場合、実行装置130は図のような結果パック・データを生成する 。ワード・データ要素2で、ビット7からの桁上げ(下記の強調表示されたビッ ト1を参照されたい)がビット8に伝搬し、データ要素2をオーバフローさせて いる(下記の強調表示された「オーバフロー」を参照されたい)ことに留意され たい。 表8cは、パック・ダブルワード・データ加算のレジスタ内表現を示す。この 演算は本発明の代替実施形態でサポートされる。したがって、データ要素の長さ が32ビットであり(すなわち、ダブルワード・データ)、符号なし不飽和加算 を実行する場合、実行装置130は図のような結果パック・データを生成する。 ダブルワード・データ要素のビット7およびビット15からの桁上げがそれぞれ 、ビット8およびに伝搬していることに留意されたい。 パック加算と通常の加算との違いをより明確に示すために、上記の例のデータ を表9で重複する。しかし、この場合、データに対して通常の加算(64ビット )が実行される。ビット7、ビット15、ビット23、ビット31、ビット39 、ビット47からの桁上げがそれぞれ、ビット8、ビット16、ビット24、ビ ット32、ビット40、ビット48に対して行われることに留意されたい。 符号付き/不飽和パック加算 表10は、パック・データのデータ要素長が8ビットである符号付きパック加 算の例を示す。飽和は使用されない。したがって、結果はオーバフローすること も、アンダーフローすることもできる。表10は、表8aないし8cおよび表9 とは異なるデータを使用する。 符号付き/飽和パック加算 表11は、パック・データのデータ要素長が8ビットである符号付きパック加 算の例を示す。飽和は使用されず、したがってオーバフローは最大値にクランプ され、アンダーフローは最小値にクランプされる。表11は表10と同じデータ を使用する。この場合、データ要素0およびデータ要素2は最小値にクランプさ れ、それに対してデータ要素4およびデータ要素6は最大値にクランプされる。 パック減算 パック減算演算 本発明の一実施形態では、実行装置130でパック減算を実行することができ る。すなわち、本発明では、第1のパック・データの各データ要素から第2のパ ック・データの各データ要素を個別に減算することができる。 第7b図は、本発明の一実施形態によってパック減算を実行する方法を示す。 ステップ710ないし713がステップ701ないし704に類似していること に留意されたい。 本発明のこの実施形態では、8ビット・データ要素長および16ビット・デー タ要素長のパック減算しかサポートされない。しかし、代替実施形態は異なる長 さまたは他の長さをサポートすることができる。たとえば、代替実施形態では3 2ビット・データ要素長のパック減算をサポートすることもできる。 データ要素長が8ビットであると仮定した場合、ステップ714aおよび71 5aが実行される。実行装置130は、ソース2のビット7ないしビット0の2 の補数をとる。この2の補数と並行して、実行装置130はソース2のビット1 5ないしビット8の2の補数をとる。これらの2の補数と並行して、実行装置1 30はソース2のビット23ないしビット16の2の補数をとる。この2の補数 と並行して、実行装置130はソース2のビット31ないしビット24の2の補 数をとる。これらの2の補数と並行して、実行装置130はソース2のビット3 9ないしビット32の2の補数をとる。この2の補数と並行して、実行装置13 0はソース2のビット47ないしビット40の2の補数をとる。これらの2の補 数と並行して、実行装置130はソース2のビット55ないしビット48の2の 補数をとる。この2の補数と並行して、実行装置130はソース2のビット63 ないしビット56の2の補数をとる。ステップ715aで、実行装置130は、 ステップ705aに関して概略的に説明したように、ソース2の2の補数ビット をソース1のビットに加算する。 データ要素長が16ビットであると仮定した場合、ステップ714bおよび7 15bが実行される。実行装置130は、ソース2のビット15ないしビット0 の2の補数をとる。この2の補数と並行して、実行装置130はソース2のビッ ト31ないしビット16の2の補数をとる。これらの2の補数と並行して、実行 装置130はソース2のビット47ないしビット32の2の補数をとる。この2 の補数と並行して、実行装置130はソース2のビット63ないしビット48の 2の補数をとる。ステップ715bで、実行装置130は、ステップ705bに 関して概略的に説明したように、ソース2の2の補数ビットをソース1のビット に加算する。 ステップ714および715が、第2の数から第1の数を減算するために本発 明の一実施形態で使用される方法であることに留意されたい。しかし、当技術分 野では他の減算形式が知られており、本発明を、2の補数演算を使用することに 限られるとみなすべきではない。 ステップ716で、デコーダ202は宛先レジスタの宛先アドレスを含むレジ スタ209をイネーブルする。したがって、結果パック・データはレジスタ20 9のDESTレジスタに記憶される。 表12はパック減算のレジスタ内表現を示す。データ要素の長さが8ビットで あり(バイト・データ)、符号なし不飽和減算を実行すると仮定した場合、実行 装置130は図のような結果パック・データを生成する。 パック・データ加減算回路 第8図は、本発明の一実施形態によってパック・データの個別に対してパック 加算およびパック減算を実行する回路を示す。第8図は、修正ビット・スライス 加減算器800を示す。加減算器801aないし801bによって、ソース2の 2つのビットをソース1に加算し、あるいはソース1から減算することができる 。演算桁上げ制御装置803は、制御装置809aへ制御信号を送り加算または 減 算をイネーブルする。したがって、加減算器801aは、ソース2i805a上 で受け取ったビットiをソース1i804a上で受け取ったビットiに対して加 算または減算し、結果i806a上で送られる結果ビットを生成する。Cin8 07aないしCin807bおよびCout808aないしCout808bは 、加算器および減算器で一般に使用される桁上げ制御回路を表す。 ビット制御装置802は、Cini+1807bおよびCoutiを制御するた めにパック・データ・イネーブル811を介して演算桁上げ制御装置803から イネーブルされる。たとえば表13aで、符号なしパック・バイト加算が実行さ れる。加減算器801aがソース2のビット7にソース1のビット7を加算した 場合、演算桁上げ制御装置803はビット制御装置802をイネーブルし、桁上 げのビット7からビット8への伝搬を停止する。 しかし、符号なしパック・ワード加算が実行され、加減算器801aが同様に 、ソース2のビット7にソース1のビット7を加算するために使用される場合、 ビット制御装置802は桁上げをビット8へ伝搬させる。表13bはこの結果を 示す。この伝搬は、パック・ダブルワード加算とアンパック加算に対して許可さ れる。 加減算器801aは、まずソース2i805aを反転させることによってソー ス2i805aの2の補数を形成し1を加算することによって、ソース1i804 aからビット・ソース2i805aを減算する。次いで、加減算器801aはこ の結果をソース1i804aに加算する。ビット・スライス2の補数技法は当技 術分野で良く知られており、当業者には、そのようなビット・スライス2の補数 回路をどのように設計すべきかが理解されよう。桁上げの伝搬がビット制御装置 802および演算桁上げ制御装置803によって制御されることに留意されたい 。 第9図は、本発明の一実施形態によってパック・バイト・データに対してパッ ク加算およびパック減算を実行する回路を示す。ソース1バス901およびソー ス2バス902はそれぞれ、情報信号をソース1in906aないし906hおよ びソース2in905aないし905hを介して加減算器908aないし908h へ送る。したがって、加減算器908aは、ソース2のビット7ないしビット0 をソース1のビット7ないしビット0に対して加減算し、加減算器908bは、 ソース2のビット15ないしビット8をソース1のビット15ないしビット8に 対して加減算し、以下同様である。CTRL904aないし904hは、桁上げ の伝搬をイネーブルし、飽和をイネーブル/ディスエーブルし、符号付き/符号 なし演算をイネーブル/ディスエーブルする制御信号をパック制御装置911を 介して演算制御装置903から受け取る。演算制御装置903は、CTRL90 4aないし904hから桁上げ情報を受け取り、それを次の上位加減算器908 aないし908hに伝搬させないことによって、桁上げの伝搬をディスエーブル する。したがって、演算制御装置903は64ビット・パック・データに対して 演算桁上げ制御装置803およびビット制御装置802の演算を実行する。当業 者なら、第1図ないし第9図および上記の説明で例示したそのような回路を作製 することができよう。 加減算器908aないし908hは結果情報を様々なパック加算の結果出力9 07aないし907hを介して結果レジスタ901aないし910hへ伝達する 。各結果レジスタ910aないし910hは結果情報を記憶し、次いで結果バス 909上へ送る。この結果情報は次いで、DEST605レジスタ・アドレスに よって指定された整数レジスタに記憶される。 第10図は、本発明の一実施形態によってパック・ワード・データに対してパ ック加算およびパック減算を実行する回路の論理図である。この場合、パック・ ワード演算が実行される。ビット8とビット7との間、ビット24とビット23 との間、ビット40とビット39との間、ビット56とビット55との間の桁上 げの伝搬は演算制御装置903によってイネーブルされる。したがって、仮想加 減算器1008aとして示した加減算器908aおよび908bは協働し、パッ ク・ワード・データ・ソース2の第1のワード(ビット15ないしビット0)を パック・ワード・データ・ソース1の第1のワード(ビット15ないしビット0 )に対して加減算し、仮想加減算器1008bとして示した加減算器908cお よび908dは協働し、パック・ワード・データ・ソース2の第2のワード(ビ ット31ないしビット16)をパック・ワード・データ・ソース1の第2のワー ド(ビット31ないしビット16)に対して加減算し、以下同様である。 仮想加減算器1008aないし1008dは結果情報を結果出力1007aな いし1007d(組合せ結果出力907aないし907b、907cないし90 7d、907eないし907f、907gないし907h)を介して仮想結果レ ジスタ1010aないし1010dへ伝達する。各仮想結果レジスタ1010a ないし1010d(組合せ結果レジスタ910aないし910b、910cない し910d、910eないし910f、910gないし910h)は、結果バス 909上へ伝達すべき16ビット結果データ要素を記憶する。 第11図は、本発明の一実施形態によってパック・ダブルワード・データに対 してパック加算およびパック減算を実行する回路の論理図である。ビット8とビ ット7との間、ビット16とビット15との間、ビット24とビット23との間 、ビット40とビット39との間、ビット48とビット47との間、ビット56 とビット55との間の桁上げの伝搬は演算制御装置903によってイネーブルさ れる。したがって、仮想加減算器1108aとして示した加減算器908aない し908dは協働し、パック・ダブルワード・データ・ソース2の第1のダブル ワード(ビット31ないしビット0)をパック・ダブルワード・データ・ソース 1の第1のダブルワード(ビット31ないしビット0)に対して加減算し、仮想 加減算器1108bとして示した加減算器908eないし908hは協働し、パ ック・ダブルワード・データ・ソース2の第2のダブルワード(ビット63ない しビット32)をパック・ダブルワード・データ・ソース1の第2のワード(ビ ット63ないしビット32)に対して加減算し、以下同様である。 仮想加減算器1108aないし1108bは結果情報を結果出力1107aな いし1107b(組合せ結果出力907aないし907d)および907eない し907h)を介して仮想結果レジスタ1110aないし1110bへ伝達する 。各仮想結果レジスタ1110aないし1110b(組合せ結果レジスタ910 aないし910d、および910eないし910h)は、結果バス909上へ伝 達すべき32ビット結果データ要素を記憶する。 パック乗算 パック乗算演算 本発明の一実施形態では、SRC1レジスタは被乗数データ(ソース1)を含 み、SRC2は乗数データ(ソース2)を含み、DESTレジスタは乗算の積の 一部(結果)を含む。すなわち、ソース1は、ソース2のそれぞれのデータ要素 が独立に乗算される各データ要素を有する。乗算のタイプに応じて、結果は積の 上位ビットまたは下位ビットを含む。 本発明の一実施形態では、上位符号なしパック乗算、上位符号付きパック乗算 、下位パック乗算の各乗算がサポートされる。上位1下位は、乗算の積のどのビ ットを結果に含めるかを示す。これが必要であるのは、2つのNビット数の乗算 の結果、2N個のビットを有する積が得られるからである。各結果データ要素が 被 乗数および乗数のデータ要素と同じサイズを有するので、結果では積の半分しか 表すことができない。上位では上位ビットが結果として出力される。下位では下 位ビットが結果として出力される。たとえば、ソース1[7:0]とソース2[ 7:0]との符号なし上位パック乗算では、積の上位ビットが結果[7:0]に 記憶される。 本発明の一実施形態では、上位|下位演算修飾子を使用することによって、あ るデータ要素から次に上位のデータ要素へのオーバフローが起こる可能性がなく なる。すなわち、この修飾子によって、プログラマはオーバフローに気を使わず に積のどのビットを結果に含めるかを選択することができる。プログラマは、パ ック乗算の組合せを使用して完全な2Nビット積を生成することができる。たと えば、上位符号なしパック乗算を使用し、次いで同じソース1およびソース2を 用いた下位パック乗算を使用して、完全な(2N)積を得ることができる。上位 演算を行うのは、積の重要な部分が積の上位ビットだけであることが多いからで ある。プログラマは、多くの場合非パック・データ演算で必要とされるように最 初に打ち切りを実行する必要なしに、積の上位ビットを得ることができる。 本発明の一実施形態では、ソース2の各データ要素は異なる値を有することが できる。このため、プログラマはソース1の各被乗数に対する乗数として異なる 値を有することができる。 第12図は、本発明の一実施形態によってパック・データに対してパック乗算 を実行する方法を示す流れ図である。 ステップ1201で、デコーダ202は、プロセッサ109から受け取った制 御信号207を復号する。したがって、デコーダ202は適切な乗算に関する命 令コードと、レジスタ209内のSRC1 602アドレス、SRC2 603 アドレス、DEST605アドレスと、パック・データ内のデータ要素の符号付 き/符号なし、上位|下位、長さを復号する。 ステップ1202で、デコーダ202は、SRC1 602アドレスおよびS RC2 603アドレスが与えられた場合に、内部バス170を介してレジスタ ・ファイル150内のレジスタ209にアクセスする。レジスタ209は、SR C1 602レジスタに記憶されているパック・データ(ソース1)と、SRC 2 603レジスタに記憶されているパック・データ(ソース2)を実行装置1 30に与える。すなわち、レジスタ209はパック・データを内部バス170を 介して実行装置130に伝達する。 ステップ1203で、デコーダ202は実行装置130が適切なパック乗算を 実行できるようにする。デコーダ202はさらに、乗算に関するデータ要素のサ イズおよび上位|下位を内部バス170を介して伝達する。 ステップ1210で、データ要素のサイズによって、どのステップを次に実行 するかが決定される。データ要素のサイズが8ビットである(バイト・データ) 場合、実行装置130はステップ1212を実行する。しかし、パック・データ 内のデータ要素の長さが16ビットである(ワード・データ)場合、実行装置1 30はステップ1214を実行する。一実施形態では、16ビット・データ要素 サイズのパック乗算しかサポートされない。他の実施形態では、8ビット・デー タ要素サイズおよび16ビット・データ要素サイズのパック乗算がサポートされ る。しかし、他の実施形態では、32ビット・データ要素サイズのパック乗算も サポートされる。 データ要素のサイズが8ビットであると仮定した場合、ステップ1212が実 行される。ステップ1212では下記のことが実行される。ソース1のビット7 ないしビット0にソース2のビット7ないしビット0が乗算され、結果のビット 7ないしビット0が生成される。ソース1のビット15ないしビット8にソース 2のビット15ないしビット8が乗算され、結果のビット15ないしビット8が 生成される。ソース1のビット23ないしビット16にソース2のビット23な いしビット16が乗算され、結果のビット23ないしビット16が生成される。 ソース1のビット31ないしビット24にソース2のビット31ないしビット2 4が乗算され、結果のビット31ないしビット24が生成される。ソース1のビ ット39ないしビット32にソース2のビット39ないしビット32が乗算され 、結果のビット39ないしビット32が生成される。ソース1のビット47ない しビット40にソース2のビット47ないしビット40が乗算され、結果のビッ ト47ないしビット40が生成される。ソース1のビット55ないしビット48 にソース2のビット55ないしビット48が乗算され、結果のビット55ないし ビ ット48が生成される。ソース1のビット63ないしビット56にソース2のビ ット63ないしビット56が乗算され、結果のビット63ないしビット56が生 成される。 データ要素のサイズが16ビットであると仮定した場合、ステップ1214が 実行される。ステップ1214では下記のことが実行される。ソース1のビット 15ないしビット0にソース2のビット15ないしビット0が乗算され、結果の ビット15ないしビット0が生成される。ソース1のビット31ないしビット1 6にソース2のビット31ないしビット16が乗算され、結果のビット31ない しビット16が生成される。ソース1のビット47ないしビット32にソース2 のビット47ないしビット32が乗算され、結果のビット47ないしビット32 が生成される。ソース1のビット63ないしビット48にソース2のビット63 ないしビット48が乗算され、結果のビット63ないしビット48が生成される 。 一実施形態では、ステップ1212の乗算が同時に実行される。しかし、他の 実施形態ではこれらの乗算が順次実行される。他の実施形態では、これらの乗算 のいくつかが同時に実行され、いくつかが順次実行される。この議論はステップ 1214の乗算にも当てはまる。 ステップ1220で、DESTレジスタに結果が記憶される。 表14は、パック・ワード・データに対する符号なし上位パック乗算のレジス タ内表現を示す。第1のビット行はソース1のパック・データ表現である。第2 のビット行はソース2のデータ表現である。第3のビット行は結果のパック・デ ータ表現である。各データ要素ビットの下方の数はデータ要素番号である。たと えば、ソース1データ要素2は11111111 000000002である。 表15は、パック・ワード・データに対する上位符号付きパック乗算のレジス タ内表現である。 表16は、パック・ワード・データに対する下位パック乗算のレジスタ内表現 である。 パック・データ乗算回路 一実施形態では、アンパック・データに対する単一の乗算と同じ数のクロック ・サイクルで複数のデータ要素に対して乗算を行うことができる。同じ数のクロ ック・サイクルで乗算を実行するために並行処理が使用される。すなわち、各レ ジスタは、データ要素に対して乗算を実行するよう同時に命令される。このこと について下記で詳しく説明する。 第13図は、本発明の一実施形態によってパック乗算を実行する回路を示す。 演算制御装置1300は、乗算を実行する回路を制御する。演算制御装置130 0は乗算用の制御信号を処理し、上位|下位イネーブル1380、バイトワード ・イネーブル1381、符号イネーブル1382の各出力を有する。上位|下位 イネーブル1380は、結果に積の上位ビットを含めるか、それとも下位ビット を含めるかを識別する。バイトワード・イネーブル1381は、バイト・パック ・データ乗算を実行するか、それともワード・パック・データ乗算を実行するか を識別する。符号イネーブル1382は、符号付き乗算を使用すべきかどうかを 識別する。 パック・ワード・マルチプライヤ1301は4つのワード・データ要素を同時 に乗算する。パック・バイト・マルチプライヤ1302は8つのバイト・データ 要素を乗算する。パック・ワード・マルチプライヤ1301とパック・バイト・ マルチプライヤ1302は共に、ソース1[63:0]1331、ソース2[6 3:0]1333、符号イネーブル1382、上位|下位イネーブル1380の 各入力を有する。 パック・ワード・マルチプライヤ1301は、16×16マルチプライヤA1 310、16×16マルチプライヤB1311、16×16マルチプライヤC1 312、16×16マルチプライヤD1313の4つの16×16マルチプライ ヤ回路を含む。16×16マルチプライヤA1310は入力としてソース1[1 5:0]とソース2[15:0]とを有する。16×16マルチプライヤB13 11は入力としてソース1[31:16]とソース2[31:16]とを有する 。16×16マルチプライヤC1312は入力としてソース1[47:32]と ソース2[47:32]とを有する。16×16マルチプライヤD1313は入 力 としてソース1[63:48]とソース2[63:48]とを有する。各16× 16マルチプライヤは符号イネーブル1382に結合される。各16×16マル チプライヤは32ビット積を生成する。各マルチプライヤごとに、マルチプレク サ(それぞれ、M×0 1350、M×1 1351、M×2 1352、M× 3 1353)は32ビットの結果を受け取る。上位|下位イネーブル1380 の値に応じて、各マルチプレクサは積の上位16ビットまたは下位16ビットを 出力する。4つのマルチプレクサの出力は1つの64ビット結果として組み合わ される。この結果は任意選択で結果レジスタ1 1371に記憶される。 パック・バイト・マルチプライヤ1302は8つの8×8マルチプライヤ回路 、すなわち8×8マルチプライヤA1320ないし8×8マルチプライヤH13 27を含む。各8×8マルチプライヤはソース1[63:0]1331およびソ ース2[63:0]1333のそれぞれからの8ビット入力を有する。たとえば 、8×8マルチプライヤA1320は入力としてソース1[7:0]およびソー ス2[7:0]を有し、それに対して8×8マルチプライヤH1327は入力と してソース1[63:56]およびソース2[63:56]を有する。各8×8 マルチプライヤは符号イネーブル1382に結合される。各8×8マルチプライ ヤは16ビットの積を生成する。各マルチプライヤごとに、マルチプレクサ(た とえば、M×4 1360およびM×11 1367)は16ビットの結果を受 け取る。上位|下位イネーブル1380の値に応じて、各マルチプレクサは積の 上位8ビットまたは下位8ビットを出力する。8つのマルチプレクサの出力は1 つの64ビット結果として組み合わされる。この結果は任意選択で結果レジスタ 2 1372に記憶される。バイトワード・イネーブル1381は、演算で必要 とされるデータ要素のサイズに応じて特定の結果レジスタをイネーブルする。 一実施形態では、乗算を実現するために使用される面積が、2つの8×8数の 両方または1つの16×16数を乗算することのできる回路を作製することによ って削減される。すなわち、2つの8×8マルチプライヤおよび1つの8×8マ ルチプライヤが1つの8×8・16×16マルチプレクサとして組み合わされる 。演算制御装置1300は乗算に適切なサイズをイネーブルする。そのような実 施形態では、マルチプレクサが使用する物理的面積が削減されるが、パック・バ イ ト乗算およびパック・ワード乗算を実行することは困難である。パック・ダブル ワード乗算をサポートする他の実施形態では、1つのマルチプライヤが4つの8 ×8乗算、2つの16×16乗算、または1つの32×32乗算を実行すること ができる。 一実施形態では、パック・ワード乗算しか行われない。この実施形態には、パ ック・バイト・マルチプライヤ1302および結果レジスタ2 1372は含ま れない。 前述のパック乗算を命令セットに含めることの利点 したがって、前述のパック乗算命令では、ソース1内の各データ要素にソース 2内のそれぞれのデータ要素を独立に乗算することができる。もちろん、ソース 2の各要素に同じ数を記憶することによって、ソース1内の各要素に同じ数を乗 算することを必要とするアルゴリズムを実行することができる。また、この乗算 命令では、桁上げチェーンを破壊することによってオーバフローが防止され、そ れによってプログラマがこの責任から解放され、命令によってデータをオーバフ ローを防止するように準備することが不要になり、よりロバストなコードが得ら れる。 これに対して、そのような命令をサポートしない従来技術の汎用プロセッサは 、データ要素をアンパックし、乗算を実行し、次いで結果を将来パック処理でき るようにパックすることによってこの演算を実行する必要がある。したがって、 プロセッサ109は、1つの命令を使用しそれぞれの異なるマルチプライヤによ ってパック・データのそれぞれの異なるデータ要素を並行して乗算することがで きる。 典型的なマルチメディア・アルゴリズムは多数の乗算を実行する。したがって 、これらの乗算を実行する必要がある命令の数を削減することによって、このよ うなマルチメディア・アルゴリズムの性能は向上する。したがって、プロセッサ 109は、それ自体がサポートする命令セットにこの乗算命令を与えることによ って、この機能を必要とするアルゴリズムをより高い性能レベルで実行すること ができる。 乗算−加減算 乗算−加減算演算 一実施形態では、下記で表17aおよび表17bに示すように単一の乗算−加 算命令を使用して2つの乗算−加算演算が実行される。表17aは、開示された 乗算−加算命令の簡略化表現を示し、それに対して表17bは、開示された乗算 −加算命令のビット・レベル例を示す。 乗算−減算演算は、加算が減算で置き換えられることを除いて乗算−加算演算 と同じである。2つの乗算−減算演算を実行する乗算−減算命令の例の演算を表 12に示す。 本発明の一実施形態では、SRC1レジスタはパック・データ(ソース1)を 含み、SRC2レジスタはパック・データ(ソース2)を含み、DESTレジス タはソース1およびソース2に対して乗算−加算命令または乗算−減算命令を実 行した結果を含む。乗算−加算命令または乗算−減算命令の第1のステップで、 ソース1の各データ要素がソース2のそれぞれのデータ要素と独立に乗算され、 1組のそれぞれの中間結果が生成される。乗算−加算命令を実行する際、これら の中間結果が対ごとに合計され、結果的に得られる2つのデータ要素が生成され 結果のデータ要素として記憶される。これに対して、乗算−減算命令を実行する 際、これらの中間結果が対ごとに減算され、結果的に得られる2つのデータ要素 が生成され結果のデータ要素として記憶される。 代替実施形態では、データ要素のビット数、または中間結果のビット数、また は結果内のデータ要素のビット数、あるいはそれらの組合せを変更することがで きる。代替実施形態では、ソース1のデータ要素の数、ソース2のデータ要素の 数、結果のデータ要素の数を変更することができる。たとえば、ソース1および ソース2がそれぞれ8つのデータ要素を有する場合、乗算−加減算命令を実施し て4つのデータ要素を含む結果を生成することも(結果の各データ要素は2つの 中間結果の加算を表す)、2つのデータ要素を含む結果を生成する(結果の各デ ータ要素は4つの中間結果の加算を表す)こともでき、以下同様である。 第14図は、本発明の一実施形態によってパック・データに対して乗算−加算 演算および乗算−減算演算を実行する方法を示す流れ図である。 ステップ1401で、デコーダ202は、プロセッサ109が受け取った制御 信号207を復号する。したがって、デコーダ202は乗算−加算命令または乗 算−減算命令に関する命令コードを復号する。 ステップ1402で、デコーダ202はSRC1 602アドレスおよびSR C2 603アドレスが与えられた場合に内部バス170を介してレジスタ・フ ァイル150内のレジスタ209にアクセスする。レジスタ209は、SRC1 602レジスタに記憶されているパック・データ(ソース1)と、SRC26 03レジスタに記憶されているパック・データ(ソース2)を実行装置130に 与える。すなわち、レジスタ209はパック・データを内部バス170を介して 実行装置130に伝達する。 ステップ1403で、デコーダ202は実行装置130が命令を実行できるよ うにする。命令が乗算−加算命令である場合、フローはステップ1414へ移る 。しかし、命令が乗算−減算命令である場合、フローはステップ1415へ移る 。 ステップ1414で下記のことが実行される。ソース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が生成される。 ステップ1415は、中間結果1と中間結果2が減算されて結果の31ビット ないしビット0が生成され、結果3と中間結果4が減算されて結果の63ビット ないしビット32が生成されることを除いて、ステップ1414と同じである。 いくつかの異なる実施形態では、乗算および加減算を順次行うことも、あるい は並行して行うことも、あるいは順次演算と並行演算のある組合せとして行うこ ともできる。 ステップ1420で、DESTレジスタに結果が記憶される。 パック・データ乗算−加減算回路 一実施形態では、アンパック・データに対する単一の乗算と同じ数のクロック ・サイクルで複数のデータ要素に対して乗算−加算命令および乗算−減算命令を それぞれ行うことができる。同じ数のクロック・サイクルでこれらの命令を実行 するために並行処理が使用される。すなわち、各レジスタは、データ要素に対し て乗算−加算演算または乗算−減算演算を実行するよう同時に命令される。この ことについて下記で詳しく説明する。 第15図は、本発明の一実施形態によってパック・データに対して乗算−加算 演算または乗算−減算演算あるいはその両方を実行する回路を示す。演算制御装 置1500は、乗算−加算命令および乗算−減算命令に関する制御信号を処理す る。演算制御装置1500はイネーブル線1580上で、パック乗算−加減算器 1501を制御する信号を出力する。 パック乗算−加減算器1501は、ソース1[63:0]1531、ソース2 [63:0]1533、イネーブル1580の各入力を有する。パック乗算−加 減算器1501は、16×16マルチプライヤA1510、16×16マルチプ ライヤB1511、16×16マルチプライヤC1512、16×16マルチプ ライヤD1513の4つの16×16マルチプライヤ回路を含む。16×16マ ルチプライヤA1510は入力としてソース1[15:0]とソース2[15: 0]とを有する。16×16マルチプライヤB1511は入力としてソース1[ 31:16]とソース2[31:16]とを有する。16×16マルチプライヤ C1512は入力としてソース1[47:32]とソース2[47:32]とを 有する。16×16マルチプライヤD1513は入力としてソース1[63:4 8]とソース2[63:48]とを有する。16×16マルチプライヤA151 0および16×16マルチプライヤB1511が生成した32ビット中間結果は 仮想加減算器1550によって受け取られ、それに対して16×16マルチプラ イヤC1512および16×16マルチプライヤD1513が生成した32ビッ ト中間結果は仮想加減算器1551によって受け取られる。 現在の命令が乗算−加算命令であるか、それとも乗算−減算命令であるかに基 づいて、仮想加減算器1550および仮想加減算器1551はそれぞれの32ビ ット入力を加算または減算する。仮想加減算器1550の出力(すなわち、結果 のビット31ないしビット0)と仮想加減算器1551の出力(すなわち、結果 のビット63ないしビット32)は64ビット結果として組み合わされ、結果レ ジスタ1571へ伝達される。 一実施形態では、仮想加減算器1551および仮想加減算器1550は仮想加 減算器1108bおよび仮想加減算器1108aと同様に実施される(すなわち 、仮想加減算器1551および仮想加減算器1550はそれぞれ、適切な伝搬遅 延を含む4つの8ビット加算器で構成される)。しかし、代替実施形態では、仮 想加減算器1551および仮想加減算器1550を任意の数の方法で実施するこ とができる。 アンパック・データを処理する従来技術のプロセッサ上でこれらの乗算−加算 命令または乗算−減算命令の等価物を実行するには、4回の別々の64ビット乗 算および2回の64ビット加算または減算と、必要なロード演算およびストア演 算が必要である。この場合、ソース1およびソース2のビット16より上位のビ ットと結果のビット32より上位のビットに使用されるデータ線および回路が無 駄になる。同様に、そのような従来技術のプロセッサによって生成される64ビ ット結果全体がプログラマにとって有用ではないこともある。したがって、プロ グラマは各結果を打ち切る必要がある。 前述の乗算−加算演算を命令セットに含めることの利点 前述の乗算−加減算命令はいくつかの目的に使用することができる。たとえば 、乗算−加算命令は、複素数の乗算と値の乗算および累算に使用することができ る。乗算−加算命令を使用するいくつかのアルゴリズムについては下記で説明す る。 したがって、プロセッサ109によってサポートされる命令セットに前述の乗 算−加算命令または乗算−減算命令あるいはその両方を含めることによって、こ れらの命令を有さない従来技術の汎用プロセッサより少ない命令で多数の機能を 実行することができる。 パック・シフト パック・シフト演算 本発明の一実施形態では、SRC1レジスタはシフトすべきデータ(ソース1 ) を含み、SRC2レジスタは、シフト・カウントを表すデータ(ソース2)を含 み、DESTレジスタはシフトの結果(結果)を含む。すなわち、ソース1の各 データ要素は独立にシフト・カウントだけシフトされる。一実施形態では、ソー ス2は符号なし64ビット・スカラとして解釈される。他の実施形態では、ソー ス2はパック・データであり、ソース1内の対応する各データ要素ごとのシフト ・カウントを含む。 本発明の一実施形態では、演算シフトと論理シフトの両方がサポートされる。 演算シフトは、各データ要素のビットを、指定された数だけシフトダウンし、各 データ要素の上位ビットに符号ビットの初期値を充填する。シフト・カウントが パック・バイト・データに関して7より大きく、あるいはパック・ワード・デー タに関して15より大きく、あるいはパック・ダブルワードに関して31より大 きい場合、各結果データ要素に符号ビットの初期値が充填される。論理シフトは 、ビットをシフトアップまたはシフトダウンすることによって動作することがで きる。右シフト論理演算では、各データ要素の上位ビットに零が充填される。左 シフト論理演算では、各データ要素の下位ビットに零が充填される。 本発明の一実施形態では、パック・バイトおよびバック・ワードに関して右シ フト演算、右シフト論理演算、左シフト論理演算がサポートされる。本発明の他 の実施形態では、パック・ダブルワードに関してもこれらの演算がサポートされ る。 第16図は、本発明の一実施形態によってパック・データに対してパック・シ フト演算を実行する方法を示す流れ図である。 ステップ1601で、デコーダ202は、プロセッサ109が受け取った制御 信号207を復号する。したがって、デコーダ202は、適切なシフト演算に関 する命令コード、レジスタ209内のSRC1 602アドレス、SRC2 6 03アドレス、DEST605アドレス、パック・データ内のデータ要素の飽和 /非飽和(必ずしもシフト演算に必要ではない)、符号付き/符号なし(これも 必ずしも必要ではない)、長さを復号する。 ステップ1602で、デコーダ202は、SRC1 602アドレスおよびS RC2 603アドレスが与えられた場合、内部バス170を介してレジスタ・ ファイル150内のレジスタ209にアクセスする。レジスタ209はSRC1 602レジスタ(ソース1)に記憶されているパック・データと、SRC26 03レジスタ(ソース2)に記憶されているスケーラ・シフト・カウントを実行 装置130に与える。すなわち、レジスタ209は内部バス170を介して実行 装置130にパック・データを伝達する。 ステップ1603で、デコーダ202は実行装置130が適切なパック・シフ ト演算を実行できるようにする。デコーダ202はさらに、内部バス170を介 してデータ要素のサイズ、シフト演算のタイプ、(論理シフトの場合の)シフト の方向を伝達する。 ステップ1610で、データ要素のサイズによって、次にどのステップを実行 するかが決定される。データ要素のサイズが8ビット(バイト・データ)である 場合、実行装置130はステップ1612を実行する。しかし、パック・データ 内のデータ要素のサイズが16ビット(ワード・データ)である場合、実行装置 130はステップ1614を実行する。一実施形態では、8ビット・データ要素 サイズ・パック・シフトおよび16ビット・データ要素サイズ・パック・シフト しかサポートされない。しかし、他の実施形態では、32ビット・データ要素サ イズもサポートされる。 データ要素のサイズが8ビットであると仮定すると、ステップ1612が実行 される。ステップ1612で、下記のことが実行される。ソース1ビット7ない し0がシフト・カウントだけシフトされ(ソース2ビット63ないし0)、結果 ビット7ないし0が生成される。ソース1ビット15ないし8がシフト・カウン トだけシフトされ、結果ビット15ないし8が生成される。ソース1ビット23 ないし16がシフト・カウントだけシフトされ、結果ビット23ないし16が生 成される。ソース1ビット31ないし24がシフト・カウントだけシフトされ、 結果ビット31ないし24が生成される。ソース1ビット39ないし32がシフ ト・カウントだけシフトされ、結果ビット39ないし32が生成される。ソース 1ビット47ないし40がシフト・カウントだけシフトされ、結果ビット47な いし40が生成される。ソース1ビット55ないし48がシフト・カウントだけ シフトされ、結果ビット55ないし48が生成される。ソース1ビット63ない し56がシフト・カウントだけシフトされ、結果ビット63ないし56が生成さ れる。 データ要素のサイズが16ビットであると仮定すると、ステップ1614が実 行される。ステップ1614で、下記のことが実行される。ソース1ビット15 ないし0がシフト・カウントだけシフトされ、結果ビット15ないし0が生成さ れる。ソース1ビット31ないし16がシフト・カウントだけシフトされ、結果 ビット31ないし16が生成される。ソース1ビット47ないし32がシフト・ カウントだけシフトされ、結果ビット47ないし32が生成される。ソース1ビ ット63ないし48がシフト・カウントだけシフトされ、結果ビット63ないし 48が生成される。 一実施形態では、ステップ1612の各シフトが同時に実行される。しかし、 他の実施形態では、これらのシフトが順次実行される。他の実施形態では、これ らのシフトのうちのいくつかが同時に実行され、いくつかが順次実行される。こ の議論はステップ1614のシフトにも当てはまる。 ステップ1620で、結果がDESTレジスタに記憶される。 表19はバイト・パック右シフト演算のレジスタ内表現を示す。第1のビット 行はソース1のパック・データ表現である。第2のビット行はソース2のデータ 表現である。第3のビット行は結果の表現である。各データ要素ビットの下方の 数はデータ要素番号である。たとえば、ソース1データ要素3は1000000 02である。 表20は、パック・バイト・データに対するパック右シフト論理演算のレジス タ内表現を示す。 表21は、パック・バイト・データに対するパック左シフト論理演算のレジス タ内表現を示す。 パック・データ・シフト回路 一実施形態では、非パック・データに対する単一のシフト演算と同じクロック ・サイクル数で、複数のデータ要素に対してシフト演算が行われる。同じクロッ ク・サイクル数で実行するために、並行処理が使用される。すなわち、各レジス タは、データ要素に対してシフト演算を実行するよう同時に命令される。これに ついて下記で詳しく論じる。 第17図は、本発明の一実施形態によってパック・データの個別のバイトに対 してパック・シフトを実行する回路を示す。第17図は、修正バイト・スライス ・シフト回路、すなわちバイト・スライス段i1799の使用法を示す。各バイ ト・スライスは、最上位データ要素バイト・スライスを除いて、シフト装置とビ ット制御回路とを含む。最上位データ要素バイト・スライスに必要なのはシフト 装置だけである。 シフト装置i1711およびシフト装置i+11771はそれぞれ、ソース1の8 ビットをシフト・カウントだけシフトできるようにする。一実施形態では、各シ フト装置は既知の8ビット・シフト回路と同様に動作する。各シフト装置はソー ス1入力と、ソース2入力と、制御入力と、次段信号と、前段信号と、結果出力 とを有する。したがって、シフト装置i1711はソース1i1731入力と、ソ ース2[63:0]1733入力と、制御i1701入力と、次段i1713信号 と、前段i1712入力と、結果レジスタi1751に記憶されている結果とを有 する。したがって、シフト装置i+11771はソース1i+11732入力と、ソー ス2[63:0]1733入力と、制御i+11702入力と、次段i+11773信 号と、前段i+11772入力と、結果レジスタi+11752に記憶されている結果 とを有する。 ソース1入力は通常、ソース1の8ビット部分である。この8ビットは最小デ ータ要素タイプ、すなわち1パック・バイト・データ要素を表す。ソース2入力 はシフト・カウントを表す。一実施形態では、各シフト装置はソース2[63: 0]1733から同じシフト・カウントを受け取る。演算制御回路1700は各 シフト装置が必要なシフトを実行できるようにする制御信号を伝送する。制御信 号はシフトのタイプ(演算/論理)およびシフトの方向から決定される。次段信 号は、そのシフト装置のビット制御回路から受け取られる。シフト装置は、シフ トの方向(左右)に応じて次段信号上の最上位ビット出力/入力をシフトする。 同様に、各シフト装置は、シフトの方向(右左)に応じて前段信号上の最下位ビ ット出力/入力をシフトする。前段信号は、前段のビット制御装置から受け取ら れる。結果出力は、シフト装置が作用しているソース1の部分に対するシフト演 算の結果を表す。 ビット制御回路i1720は、パック・データイネーブル回路i1706を介し て演算制御回路1700からイネーブルされる。ビット制御回路i1720は次 段i1713および前段i+11772を制御する。たとえば、シフト装置i171 1はソース1の下位8ビットに責任を負い、シフト装置i+11771はソース1 の次の8ビットに責任を負う。パック・データに対するシフトを実行する場合、 ビット制御回路i1720では、シフト装置i+11771の下位ビットをシフト装 置i1711の上位ビットへ移すことはできない。しかし、パック・ワードに対 するシフトを実行する場合、ビット制御回路i1720によって、シフト装置i+1 1771の最下位ビットをシフト装置i1711の最上位ビットへ移すことがで きる。 たとえば、表22で、パック・データ右シフト演算が実行される。シフト装置i+1 1771がデータ要素1に作用し、シフト装置i1711がデータ要素0に作 用すると仮定する。シフト装置i+11771はその最下位ビット出力をシフトア ウトする。しかし、演算制御回路1700はビット制御回路i1720に、前段i +1 1721から受け取ったそのビットの次段i1713への伝搬を停止させる。 その代わりに、シフト装置i1711は上位ビットに符号ビット、すなわちソー ス1[7]を充填する。 しかし、パック・ワードシフト演算を実行する場合、シフト装置i+11771の 最下位ビットはシフト装置i1711の最上位ビットへ移される。表23はこの 結果を示している。この処理はパック・ダブルワード・シフトでも行うことがで きる。 各シフト装置は任意選択で結果レジスタに結合される。結果レジスタは完全結 果信号、すなわち結果[63:0]1760をDESTレジスタへ伝送できるよ うになるまでシフト演算の結果を一時的に記憶する。 完全64ビット・パック・シフト回路では、8つのシフト装置および7つのビ ット制御装置が使用される。そのような回路を使用して64ビット・非パック・ データに対するシフトを実行し、それによって、同じ回路を使用して非パック・ シフト演算とパック・シフト演算を実行することもできる。 前述のシフト演算を命令セットに含めることの利点 前述のパック・シフト命令では、ソース1の各要素が、指示されたシフト・カ ウントだけシフトされる。この命令を命令セットに含めることによって、単一の 命令を使用してパック・データの各要素をシフトすることができる。これに対し て、そのような演算をサポートしない従来技術の汎用プロセッサは多数の命令を 実行してソース1をアンパックし、各アンパック・データ要素を個別にシフトし 、次いで、結果をさらにパック処理できるようにパック・データ・フォーマット にパックしなければならない。 移動演算 移動演算では、レジスタ209との間でデータが転送される。一実施形態では 、SRC2 603は、ソース・データを含むアドレスであり、DEST605 は、データが転送されるアドレスである。この実施形態では、SRC1 602 は使用されない。他の実施形態では、SRC1 602はDEST605に等し い。 移動演算の説明のために、レジスタとメモリ位置を区別する。レジスタはレジ スタ・ファイル150内に存在するものであり、それに対してメモリはたとえば 、キャッシュ160、メイン・メモリ104、ROM106、データ記憶装置1 07でよい。 移動演算では、メモリからレジスタ209へ、レジスタ209からメモリへ、 レジスタ209内のあるレジスタからレジスタ209内の第2のレジスタへデー タを移動させることができる。一実施形態では、パック・データが、整数データ を記憶するために使用されるレジスタとは異なるレジスタに記憶される。この実 施形態では、移動演算で整数レジスタ201からレジスタ209にデータを移動 することができる。たとえば、プロセッサ109では、パック・データをレジス タ209に記憶し、整数データを整数レジスタ201に記憶する場合、移動命令 を使用してデータを整数レジスタ201からレジスタ209へ移動させることが でき、逆もまた同様である。 一実施形態では、メモリ・アドレスを移動の対象として示すと、そのメモリ位 置(下位バイトを含むメモリ位置)にある8バイト・データがレジスタ209内 のレジスタにロードされ、あるいはそのレジスタから格納される。レジスタ20 9内のあるレジスタを指示すると、そのレジスタの内容がレジスタ209内の第 2のレジスタヘ移動され、あるいはそのレジスタからロードされる。整数レジス タ201の長さが64ビットであり、整数レジスタを指定した場合、その整数レ ジスタ内の8バイト・データがレジスタ209内のあるレジスタにロードされ、 あるいはそのレジスタから格納される。 一実施形態では、整数は32ビットとして表される。レジスタ209から整数 レジスタ201への移動演算を実行すると、パック・データの下位32ビットの みが、指定された整数レジスタへ移動される。一実施形態では、上位32ビット は零になる。同様に、整数レジスタ201からレジスタ209への移動を実行す ると、レジスタ209内のレジスタの下位32ビットのみがロードされる。一実 施形態では、プロセッサ109はレジスタ209内のレジスタとメモリとの間の 32ビット移動演算をサポートする。他の実施形態では、パック・データの上位 32ビットに対して32ビットのみの移動が実行される。 パック演算 本発明の一実施形態では、SRC1 602レジスタはデータ(ソース1)を 含み、SRC2 603レジスタはデータ(ソース2)を含み、DEST605 レジスタは演算の結果データ(結果)を含む。すなわち、ソース1の各部とソー ス2の各部がパックされ結果が生成される。 一実施形態では、パック演算により、ソース・パック・ワード(またはダブル ワード)の下位バイト(またはワード)を結果のバイト(またはワード)として パックすることによって、パック・ワード(またはダブルワード)がパック・バ イト(またはワード)に変換される。一実施形態では、パック演算でカド・パッ ク・ワードをパック・ダブルワードに変換する。この演算は任意選択で、符号付 きデータを用いて実行することができる。さらに、この演算は任意選択で、飽和 を用いて実行することができる。代替実施形態では、各データ要素の上位部分に 作用する追加パック演算が含められる。 第18図は、本発明の一実施形態によってパック・データに対してパック演算 を実行する方法を示す流れ図である。 ステップ1801で、デコーダ202は、プロセッサ109が受け取った制御 信号207を復号する。したがって、デコーダ202は、適切なパック演算に関 する命令コード、レジスタ209内のSRC1 602アドレス、SRC2 6 03アドレス、DEST605アドレス、パック・データ内のデータ要素の飽和 /非飽和、符号付き/符号なし、長さを復号する。前述のように、SRC1 6 02(またはSRC2 603)をDEST605とみなすことができる。 ステップ1802で、デコーダ202は、SRC1 602アドレスおよびS RC2 603アドレスが与えられた場合、内部バス170を介してレジスタ・ ファイル150内のレジスタ209にアクセスする。レジスタ209はSRC1 602レジスタ(ソース1)に記憶されているパック・データと、SRC26 03レジスタ(ソース2)に記憶されているパック・データを実行装置130に 与える。すなわち、レジスタ209は内部バス170を介して実行装置130に パック・データを伝達する。 ステップ1803で、デコーダ202は実行装置130が適切なパック演算を 実行できるようにする。デコーダ202はさらに、内部バス170を介してソー ス1およびソース2内のデータ要素の飽和およびサイズを伝達する。飽和は任意 選択で、結果データ要素内のデータの値を最大にするために使用される。ソース 1またはソース2内のデータ要素の値が、結果のデータ要素が表すことのできる 値の範囲よりも大きく、あるいは小さい場合、対応する結果データ要素はその最 高値またはまたは最低値に設定される。たとえば、ソース1およびソース2のワ ード・データ要素内の符号付き値が0x80(あるいはダブルワードの場合は0 x8000)より小さい場合、結果バイト(またはワード)データ要素は0x8 0(あるいはダブルワードの場合は0x8000)にクランプされる。ソース1 およびソース2のワード・データ要素内の符号付き値が0x7F(あるいはダブ ルワードの場合は0x7FFF)より小さい場合、結果バイト(またはワード) データ要素は0x7F(あるいはダブルワードの場合は0x7FFF)にクラン プされる。 ステップ1810で、データ要素のサイズによって、次にどのステップを実行 するかが決定される。データ要素のサイズが16ビット(パック・ワード402 データ)である場合、実行装置130はステップ1812を実行する。しかし、 パック・データ内のデータ要素のサイズが32ビット(パック・ダブルワード4 03データ)である場合、実行装置130はステップ1814を実行する。 ソース・データ要素のサイズが16ビットであると仮定すると、ステップ18 12が実行される。ステップ1812では下記のことが実行される。ソース1ビ ット7ないし0が結果ビット7ないし0になる。ソース1ビット23ないし16 が結果ビット15ないし8になる。ソース1ビット39ないし32が結果ビット 23ないし16になる。ソース1ビット63ないし56が結果ビット31ないし 24になる。ソース2ビット7ないし0が結果ビット39ないし32になる。ソ ース2ビット23ないし16が結果ビット47ないし40になる。ソース2ビッ ト39ないし32が結果ビット55ないし48になる。ソース2ビット63ない し56が結果ビット31ないし24になる。飽和がセットされている場合、各ワ ードの上位ビットが試験され、結果データ要素をクランプすべきかどうかが判定 される。 ソース・データ要素のサイズが32ビットであると仮定すると、ステップ18 14が実行される。ステップ1814では下記のことが実行される。ソース1ビ ット15ないし0が結果ビット15ないし0になる。ソース1ビット47ないし 32が結果ビット31ないし16になる。ソース2ビット15ないし0が結果ビ ット47ないし32になる。ソース2ビット47ないし32が結果ビット63な いし48になる。飽和がセットされている場合、各ダブルワードの上位ビットが 試験され、結果データ要素をクランプすべきかどうかが判定される。 一実施形態では、ステップ1812のパッキングが同時に実行される。しかし 、他の実施形態では、このパッキングが順次実行される。他の実施形態では、い くつかのパッキングが同時に実行され、いくつかのパッキングが順次実行される 。この議論はステップ1814のパッキングにも当てはまる。 ステップ1820で、結果がDEST605レジスタに記憶される。 表24はワード・パック演算のレジスタ内表現を示す。下付き文字付きのHs およびLsはそれぞれ、ソース1およびソース2内の各16ビット・データ要素 の上位ビットおよび下位ビットを表す。たとえば、ALはソース1内のデータ要 素Aの下位8ビットを表す。 表25は、ダブルワード・パック演算のレジスタ内表現を示し、下付き文字付 きのHsおよびLsはそれぞれ、ソース1およびソース2内の各32ビット・デー タ要素の上位ビットおよび下位ビットを表す。 パック回路 本発明の一実施形態では、パック演算を効率的に実行するために、並行処理が 使用される。第19a図および第19b図は、本発明の一実施形態によってパッ ク・データに対してパック演算を実行する回路を示す。この回路は任意選択で、 飽和を用いてパック演算を実行する。 第19a図および第19b図は、演算制御回路1900と、結果レジスタ19 52と、結果レジスタ1953と、8つの16ビット・8ビット試験飽和回路と 、 4つの32ビット・16ビット試験飽和回路とを含む。 演算制御回路1900は、パック演算をイネーブルする情報をデコーダ202 から受け取る。演算制御回路1900は飽和値を使用して各試験飽和回路の飽和 試験をイネーブルする。ソース・パック・データのサイズがワード・パック・デ ータ503である場合、演算制御回路1900によって出力イネーブル信号19 31がセットされる。これによって結果レジスタ1952の出力がイネーブルさ れる。ソース・パック・データのサイズがダブルワード・パック・データ504 である場合、演算制御回路1900によって出力イネーブル信号1932がセッ トされる。これによって結果レジスタ1953の出力がイネーブルされる。 各試験飽和回路は選択的に飽和に関する試験を行うことができる。飽和に関す る試験をディスエーブルした場合、各試験飽和回路は下位ビットを結果レジスタ 内の対応する位置へ通過させるに過ぎない。飽和に関する試験をイネーブルした 場合、各試験飽和回路は上位ビットを試験して、結果をクランプすべきかどうか を判定する。 試験飽和回路1910ないし試験飽和回路1917は16ビット入力と8ビッ ト出力とを有する。8ビット出力は、入力の下位8ビットであり、あるいは任意 選択でクランプ値(0×80、0×7F、または0×FF)である。試験飽和回 路1910はソース1ビット15ないし0を受け取り、結果レジスタ1952の ビット7ないし0を出力する。試験飽和回路1911はソース1ビット31ない し16を受け取り、結果レジスタ1952のビット15ないし8を出力する。試 験飽和回路1912はソース1ビット47ないし32を受け取り、結果レジスタ 1952のビット32ないし16を出力する。試験飽和回路1913はソース1 ビット63ないし48を受け取り、結果レジスタ1952のビット31ないし2 4を出力する。試験飽和回路1914はソース2ビット15ないし0を受け取り 、結果レジスタ1952のビット39ないし32を出力する。試験飽和回路19 15はソース2ビット31ないし16を受け取り、結果レジスタ1952のビッ ト47ないし40を出力する。試験飽和回路1916はソース2ビット47ない し32を受け取り、結果レジスタ1952のビット55ないし48を出力する。 試験飽和回路1917はソース2ビット63ないし48を受け取り、結果レジス タ 1952のビット63ないし56を出力する。 試験飽和回路1920ないし試験飽和回路1923は32ビット入力と16ビ ット出力とを有する。16ビット出力は、入力の下位16ビットであり、あるい は任意選択でクランプ値(0×8000、0×7FFF、または0×FFFF) である。試験飽和回路1920はソース1ビット31ないし0を受け取り、結果 レジスタ1953のビット15ないし0を出力する。試験飽和回路1921はソ ース1ビット63ないし32を受け取り、結果レジスタ1953のビット31な いし16を出力する。試験飽和回路1922はソース2ビット31ないし0を受 け取り、結果レジスタ1953のビット47ないし32を出力する。試験飽和回 路1923はソース2ビット63ないし32を受け取り、結果レジスタ1953 のビット63ないし48を出力する。 たとえば、表26では、飽和しない符号なしパック・ワードが実行される。演 算制御回路1900は結果レジスタ1952が結果[63:0]1960を出力 できるようにする。 しかし、飽和しない符号なしパック・ダブルワードを実行する場合、演算制御 回路1900は結果レジスタ1953が結果[63:0]1960を出力できる ようにする。 表27はこの結果を示す。 前述のパック演算を命令セットに含めることの利点 前述のパック命令では、ソース1およびソース2内の各データ要素から所定数 のビットがパックされ、結果が生成される。このように、プロセッサ109は、 従来技術の汎用プロセッサが必要とする命令の半分程度にデータをパックするこ とができる。たとえば、4つの16ビット要素を含む結果を4つの32ビットデ ータ要素から生成する場合、下記に示したように(2つの命令ではなく)1つの 命令しか必要とされない。 典型的なマルチメディア・アプリケーションは大量のデータをパックする。し たがって、このデータをパックするのに必要な命令の数を2分の1程度削減する ことによって、マルチメディア・アプリケーションの性能が向上する。 アンパック演算 アンパック演算 一実施形態では、アンパック演算によって、2つのソース・パック・データの 下位パック・バイト、ワード、またはダブルワードがインタリーブされ、結果パ ック・バイト、ワード、またはダブルワードが生成される。この演算を本明細書 では下位アンパック演算と呼ぶ。他の実施形態では、アンパック演算は上位要素 をインタリーブすることもできる(上位アンパック演算と呼ぶ)。 第20図は、本発明の一実施形態によってパック・データに対するアンパック 演算を実行する方法を示す流れ図である。 まずステップ2001およびステップ2002が実行される。ステップ200 3で、デコーダ202は実行装置130がアンパック演算を実行できるようにす る。デコーダ202は内部バス170を介して、ソース1およびソース2内のデ ータ要素のサイズを伝達する。 ステップ2010で、データ要素のサイズによって、次にどのステップを実行 すべきかが決定される。データ要素のサイズが8ビットである場合(パック・バ イト401データ)、実行装置130はステップ2012を実行する。しかし、 パック・データ内のデータ要素のサイズが16ビットである場合(パック・ワー ド402データ)、実行装置130はステップ2014を実行する。しかし、パ ック・データ内のデータ要素のサイズが32ビットである場合(パック・ダブル ワード503データ)、実行装置130はステップ2016を実行する。 ソース・データ要素のサイズが8ビットであると仮定すると、ステップ201 2が実行される。ステップ2012では下記のことが実行される。ソース1ビッ ト7ないし0が結果ビット7ないし0になる。ソース2ビット7ないし0が結果 ビット15ないし8になる。ソース1ビット15ないし8が結果ビット23ない し16になる。ソース2ビット15ないし8が結果ビット31ないし24になる 。ソース1ビット23ないし16が結果ビット39ないし32になる。ソース2 ビット23ないし16が結果ビット47ないし40になる。ソース1ビット31 ないし24が結果ビット55ないし48になる。ソース2ビット31ないし24 が結果ビット63ないし56になる。 ソース・データ要素のサイズが16ビットであると仮定すると、ステップ20 14が実行される。ステップ2014では下記のことが実行される。ソース1ビ ット15ないし0が結果ビット15ないし0になる。ソース2ビット15ないし 0が結果ビット31ないし16になる。ソース1ビット31ないし16が結果ビ ット47ないし32になる。ソース2ビット31ないし16が結果ビット63な いし48になる。 ソース・データ要素のサイズが32ビットであると仮定すると、ステップ20 16が実行される。ステップ2016では下記のことが実行される。ソース1ビ ット31ないし0が結果ビット31ないし0になる。ソース2ビット31ないし 0が結果ビット63ないし32になる。 一実施形態では、ステップ2012のアンパッキングが同時に実行される。し かし、他の実施形態では、このアンパッキングが順次実行される。他の実施形態 では、いくつかのアンパッキングが同時に実行され、いくつかのアンパッキング が順次実行される。この議論はステップ2014およびステップ2016のアン パッキングにも当てはまる。 ステップ2020で、結果がDEST605レジスタに記憶される。 表29はダブルワード・アンパック演算のレジスタ内表現を示す(データ要素 A0ないし1およびB0ないし1はそれぞれ32ビットを含む)。 表30は、ワード・アンパック演算のレジスタ内表現を示す(データ要素A0 ないし3およびB0ないし3はそれぞれ16ビットを含む)。 表31は、バイト・アンパック演算のレジスタ内表現を示す(データ要素A0 ないし7およびB0ないし7はそれぞれ8ビットを含む)。 アンパック回路 第21図は、本発明の一実施形態によってパック・データに対してアンパック 演算を実行する回路を示す。第21図のこの回路は、演算制御回路2100と、 結果レジスタ2152と、結果レジスタ2153と、結果レジスタ2154とを 含む。 演算制御回路2100は、アンパック演算をイネーブルする情報をデコーダ2 02から受け取る。ソース・パック・データのサイズがバイト・パック・データ 502である場合、演算制御回路2100によって出力イネーブル信号2132 がセットされる。これによって結果レジスタ2152の出力がイネーブルされる 。ソース・パック・データのサイズがワード・パック・データ503である場合 、演算制御回路2100によって出力イネーブル信号2133がセットされる。 これによって結果レジスタ2153の出力がイネーブルされる。ソース・パック ・データのサイズがダブルワード・パック・データ504である場合、演算制御 回路2100によって出力イネーブル信号2134がセットされる。これによっ て結果レジスタ2154の出力がイネーブルされる。 結果レジスタ2152は下記の入力を有する。ソース1ビット7ないし0は結 果レジスタ2152のビット7ないし0である。ソース2ビット7ないし0は結 果レジスタ2152のビット15ないし8である。ソース1ビット15ないし8 は結果レジスタ2152のビット23ないし16である。ソース2ビット15な いし8は結果レジスタ2152のビット31ないし24である。ソース1ビット 23ないし16は結果レジスタ2152のビット39ないし32である。ソース 2ビット23ないし16は結果レジスタ2152のビット47ないし40である 。ソース1ビット31ないし24は結果レジスタ2152のビット55ないし4 8である。ソース2ビット31ないし24は結果レジスタ2152のビット63 ないし56である。 結果レジスタ2153は下記の入力を有する。ソース1ビット15ないし0は 結果レジスタ2153のビット15ないし0である。ソース2ビット15ないし 0は結果レジスタ2153のビット31ないし16である。ソース1ビット31 ないし16は結果レジスタ2153のビット47ないし32である。ソース2ビ ット31ないし16は結果レジスタ1953のビット63ないし48である。 結果レジスタ2154は下記の入力を有する。ソース1ビット31ないし0は 結果レジスタ2154のビット31ないし0である。ソース2ビット31ないし 0は結果レジスタ2154のビット63ないし32である。 たとえば、表32では、ワード・アンパック演算が実行される。演算制御回路 2100は結果レジスタ2153が結果[63:0]2160を出力できるよう にする。 しかし、ダブルワード・アンパック演算を実行する場合、演算制御回路210 0は結果レジスタ2154が結果[63:0]2160を出力できるようにする 。表33はこの結果を示す。 前述のアンパック命令を命令セットに含めることの利点 前述のアンパック命令を命令セットに含めることによって、パック・データを インタリーブまたはアンパックすることができる。このアンパック命令を使用し 、ソース2内のすべてのデータ要素をすべて零にすることによってパック・デー タをアンパックすることができる。バイトのアンパックの例を下記の表34aに 示す。 この同じアンパック命令を使用して、表34bに示したようにデータをインタ リーブすることができる。インタリーブは、いくつかのマルチメディア・アルゴ リズムで有用である。たとえば、インタリーブは行列を交差させ画素を補間する 場合に有用である。 したがって、プロセッサ109によってサポートされる命令セットにこのアン パック命令を与えることによって、プロセッサ109はより融通が利くようにな り、この機能を必要とするアルゴリズムをより高い性能レベルで実行することが できる。 ポピュレーション・カウント ポピュレーション・カウント 本発明の一実施形態では、パック・データに対してポピュレーンョン・カウン ト演算を実行することができる。すなわち、本発明は第1のパック・データの各 データ要素ごとに結果データ要素を生成する。各結果データ要素は、第1のパッ ク・データの対応する各データ要素内にセットされたビットの数を表す。一実施 形態では、1にセットされたビットの総数がカウントされる。 表35aは、パック・データに対するポピュレーション・カウント演算のレジ スタ内表現を示す。第1のビット行はソース1パック・データのパック・データ 表現である。第2のビット行は結果パック・データのパック・データ表現である 。各データ要素ビットの下方の数はデータ要素番号である。たとえば、ソース1 データ要素0は10001111100010002である。したがって、デー タ要素の長さが16ビットであり(ワード・データ)、ポピュレーション・カウ ント演算を実行する場合、実行装置130は表のように結果パック・データを生 成する。 他の実施形態では、8ビット・データ要素に対してポピュレーション・カウン トが実行される。表35bは、8つの8ビット・パック・データ要素を有するパ ック・データに対するポピュレーション・カウントのレジスタ内表現を示す。 他の実施形態では、32ビット・データ要素に対してポピュレーション・カウ ントが実行される。表35cは、2つの32ビット・パック・データ要素を有す るパック・データに対するポピュレーション・カウントのレジスタ内表現を示す 。 ポピュレーション・カウントは64ビット整数データにも実行される。すなわ ち、64ビット・データにおける、1にセットされたビットの数が合計される。 表35dは、64ビット整数データに対するポピュレーション・カウントのレジ スタ内表現を示す。 ポピュレーション・カウントを実行する方法 第22図は、本発明の一実施形態によってパック・データに対してポピュレー ション・カウントを実行する方法を示す流れ図である。ステップ2201で、デ コーダ202が、制御信号207を受け取ったことに応答して、その制御信号2 07を復号する。一実施形態では、制御信号207はバス101を介して供給さ れる。別の実施形態では、制御信号207はキャッシュ160から供給される。 したがって、デコーダ202はポピュレーション・カウントに関する命令コード と、レジスタ209内のSRC1 602アドレスおよびDEST605を復号 する。本発明のこの実施形態ではSRC2 603が使用されないことに留意さ れたい。同様に、この実施形態では、データ要素の飽和/非飽和、符号付き/符 号なし、長さも使用されない。本発明のこの実施形態では、16ビット・データ 要素長パック加算しかサポートされない。しかし、当業者には、8つのパック・ バイト・データ要素または2つのパック・ダブルワード・データ要素を有するパ ック・データに対してポピュレーション・カウントを実行できることが理解され よう。 ステップ2202で、SRC1 602が与えられた場合、内部バス170を 介してデコーダ202はレジスタ・ファイル150内のレジスタ209にアクセ スする。レジスタ209は、レジスタのこのアドレスに記憶されているパック・ データ、すなわちソース1を実行装置130に与える。すなわち、レジスタ20 9は内部バス170を介して実行装置130にパック・データを伝達する。 ステップ2130で、デコーダ202は実行装置130がポピュレーション・ カウント演算を実行できるようにする。代替実施形態では、デコーダ202はさ らに、内部バス170を介してパック・データ要素の長さを伝達する。 ステップ2205で、データ要素の長さが16ビットであると仮定すると、実 行装置130はソース1のビット15ないしビット0のうちの、セットされてい るビットの数を合計し、結果パック・データのビット15ないしビット0を生成 する。実行装置130は、この合計と並行して、ソース1のビット31ないしビ ット16を合計し、結果パック・データのビット31ないしビット16を生成す る。実行装置130は、この合計と並行して、ソース1のビット47ないしビッ ト32を合計し、結果パック・データのビット47ないしビット32を生成する 。実行装置130は、この合計と並行して、ソース1のビット63ないしビット 48を合計し、結果パック・データのビット63ないしビット48を生成する。 ステップ2206で、デコーダ202は、宛先レジスタのDEST605アド レスを有するレジスタ209内のレジスタをイネーブルする。したがって、結果 パック・データは、DEST605によってアドレス指定されたレジスタに記憶 される。 1つのデータ要素に対してポピュレーション・カウントを実行する方法 第23図は、パック・データの1つのデータ要素に対してポピュレーション・ カウント演算を実行し、本発明の一実施形態によって結果パック・データの単一 の結果データ要素を生成する方法を示す流れ図である。ステップ2310aで、 ソース1ビット15、14、13、12から列和CSum1aおよび列桁上げC Carry1aが生成される。ステップ2310bで、ソース1ビット11、1 0、9、8から列和CSum1bおよび列桁上げCCarry1bが生成される 。ステップ2310cで、ソース1ビット7、6、5、4から列和CSum1c および列桁上げCCarry1cが生成される。ステップ2310dで、ソース 1ビット3、2、1、0から列和CSum1dおよび列桁上げCCarry1d が生成される。本発明の一実施形態ではステップ2310aないしdは並行して 実行される。ステップ2320aで、CSum1a、CCarry1a、CSu m1b、CCarry1bから列和CSum2aおよび列桁上げCCarry2 bが生成される。ステップ2320bで、CSum1c、CCarry1、CS um1d、CCarry1dから列和CSum2bおよび列桁上げCCarry 2bが生成される。一実施形態では、ステップ2320aないしbは並行して実 行される。ステップ2330で、CSum2a、CCarry2a、CSum2 b、CCarry2bから列和CSum3および列桁上げCCarry3が生成 される。ステップ2340で、CSum3およびCCarry3から結果が生成 される。一実施形態では、結果は16ビットで表される。この実施形態では、ソ ース1内のセットされているビットの最大数を表すのにビット4ないしビット0 しか必要ないので、ビット15ないし5は零にセットされる。ソース1の最大ビ ット数は16である。これは、ソース1が11111111111111112 に等しいときに生じる。この結果は16であり、00000000000100 002で表される。 したがって、64ビット・パック・データに対するポピュレーション・カウン ト演算の4つの結果データ要素を算出するために、パック・データ内の各データ 要素ごとに第23図のステップが実行される。一実施形態では、4つの16ビッ ト結果データ要素が並行して計算される。 ポピュレーション・カウントを実行する回路 第24図は、本発明の一実施形態によって4つのワード・データ要素を有する パック・データに対してポピュレーション・カウント演算を実行する回路を示す 。第25図は、本発明の一実施形態によってパック・データの1つのワード・デ ータ要素に対してポピュレーション・カウント演算を実行する詳細な回路を示す 。 第24図は、ソース1バス2401がソース1IN2406aないしdを介して popcnt回路2408aないしdへ信号を搬送する回路を示す。したがって 、popcnt回路2408aはソース1のビット15ないしビット0のうちの セットされているビットの数を合計し、結果のビット15ないしビット0を生成 する。popcnt回路2408bはソース1のビット31ないしビット16の うちのセットされているビットの数を合計し、結果のビット31ないしビット1 6を生成する。popcnt回路2408cはソース1のビット47ないしビッ ト32のうちのセットされているビットの数を合計し、結果のビット47ないし ビット32を生成する。popcnt回路2408dはソース1のビット63な いしビット48のうちのセットされているビットの数を合計し、結果のビット6 3ないしビット48を生成する。イネーブル入力2404aないしdは、pop cnt回路2408aないしdがポピュレーション・カウント演算を実行し、結 果を結果バス2409上に置くことができるようにする制御信号を制御回路24 03を介して演算制御回路2410から受け取る。当業者なら、上記の説明およ び第1図ないし第6b図および第23図ないし第25図の例示が与えられれば、 そのような回路を製作することができる。 popcnt回路2408aないしdはパック・ポピュレーション・カウント 演算の結果情報を結果出力2407aないしdを介して結果バス2409上に伝 達する。この結果情報は次いて、DEST605レジスタ・アドレスで指定され た整数レジスタに記憶される。 1つのデータ要素に対してポピュレーション・カウントを実行する回路 第25図は、パック・データ要素の1つのワード・データ要素に対してポピュ レーション・カウント演算を実行する詳細な回路を示す。特に、第25図はpo pcnt回路2408aの一部を示す。ポピュレーション・カウント演算を使用 するアプリケーションの最大性能を達成するには、演算を1クロック・サイクル 内に完了すべきである。したがって、レジスタにアクセスし結果を記憶するのに 1クロック・サイクルのうちのある割合が必要である場合、第24図の回路は1 クロック周期の約80%内に演算を完了する。この回路は、プロセッサ109が 4つの16ビット・データ要素に対するポピュレーション・カウント演算を1ク ロック・サイクルで実行できるようにするという利点を有する。 popcnt回路2408aは4−>2桁上げ−保存加算器(特に明示しない かぎり、CSAは4−>2桁上げ−保存加算器を指す)を使用する。4−>2桁 上げ−保存加算器は、popcnt回路2408aないしdで使用することがで き、当技術分野で良く知られている。4−>2桁上げ−保存加算器とは、4つの オペランドを加算し2つの和を得る加算器である。popcnt回路2408a でのポピュレーション・カウント演算では16ビットが使用されるので、第1の レベルには4つの4−>2桁上げ−保存加算器が含まれる。この4つの4−>2 桁上げ−保存加算器は16個の1ビット・オペランドを8つの2ビット和に変換 する。第2のレベルは4つの3ビット和を2つの4ビット和に変換する。次いで 、4ビット全加算器が2つの4ビット和を加算し最終結果を生成する。 4−>2桁上げ−保存加算器が使用されるが、代替実施形態では3−>2桁上 げ−保存加算器を使用することができる。別法として、いくつかの全加算器を使 用することができる。しかし、この構成は、第25図に示した実施形態ほど迅速 に結果を与えるわけではない。 ソース1IN15-0.2406aはソース1のビット15ないしビット0を桁上げす る。最初の4ビットは4−>2桁上げ−保存加算器(CSA2510a)の入力 に結合される。次の4ビットはCSA2510bに結合される。次の4ビットは CSA2510cに結合される。最後の4ビットはCSA2510dの入力に結 合される。各CSA2510aないしdは2つの2ビット出力を生成する。CS A2510aの2つの2ビット出力はCSA2520aの2つの入力に結合され る。CSA2510bの2つの2ビット出力はCSA2520aの他の2つの入 力に結合される。CSA2510cの2つの2ビット出力はCSA2520bの 2つの入力に結合される。CSA2510dの2つの2ビット出力はCSA25 20bの他の2つの入力に結合される。各CSA2520aないしbは2つの3 ビット出力を生成する。2520aの2つの3ビット出力はCSA2530の2 つの入力に結合される。2520bの2つの3ビット出力はCSA2530の他 の2つの入力に結合される。CSA2530は2つの4ビット出力を生成する。 この2つの4ビット出力は全加算器(FA2550)の2つの入力に結合され る。FA2550は2つの4ビット入力を加算し、結果出力2407aのビット 3ないしビット0を2つの4ビット入力の加算結果として伝達する。FA255 0は桁上げ(CO2552)を通じて結果出力2407aのビット4を生成する 。代替実施形態では、5ビット全加算器を使用して結果出力2407aのビット 4ないしビット0が生成される。いずれの場合も、結果出力2407aのビット 15ないしビット5は零に結合される。同様に、全加算器への桁上げ入力も零に 結合される。 第25図には示していないが、当業者なら、結果出力2407aを結果バス2 409上に多重化またはバッファできることが理解されよう。マルチプレクサは イネーブル入力2404aによって制御される。これによって、他の実行装置回 路は結果バス2409にデータを書き込むことができる。 前述のポピュレーション・カウント演算を命令セットに含めることの利点 前述のポピュレーション・カウント命令は、ソース1などのパック・データの 各データ要素内のセットされているビットの数を算出する。したがって、この命 令を命令セットに含めることによって、単一の命令でパック・データに対してポ ピュレーション・カウント演算を実行することができる。これに対して、従来技 術の汎用プロセッサは、多数の命令を実行してソース1をアンパックし、各アン パック・データ要素に対して個別に関数を実行し、次いで結果をさらにパック処 理できるようにパックしなければならない。 したがって、プロセッサ109によってサポートされる命令セットにこのポピ ュレーション・カウント命令を与えることによって、この機能を必要とするアル ゴリズムの性能が向上する。 論理演算 論理演算 本発明の一実施形態では、SRC1レジスタはパック・データ(ソース1)を 含み、SRC2レジスタはパック・データ(ソース2)を含み、DESTレジス タは、選択された論理演算をソース1およびソース2に対して実行した結果(結 果)を含む。たとえば、論理AND演算が選択された場合、ソース1がソース2 と論理ANDされる。 本発明の一実施形態では、論理AND、論理ANDN、論理OR、論理XOR の各論理演算がサポートされる。論理AND演算、論理OR演算、論理XOR演 算は当技術分野で良く知られている。論理ANDN演算では、ソース2がソース 1の論理逆数とANDされる。これらの論理演算に関連して本発明を説明するが 、代替実施形態では他の論理演算を実施することができる。 第26図は、本発明の一実施形態によってパック・データに対していくつかの 論理演算を実行する方法を示す流れ図である。 ステップ2601で、デコーダ202は、プロセッサ109が受け取った制御 信号207を復号する。したがって、デコーダ202は適切な論理演算(すなわ ち、AND、ANDN、OR、またはXOR)に関する命令コードと、レジスタ 209内のSRC1 602アドレス、SRC2 603アドレス、DEST6 05アドレスを復号する。 ステップ2602で、SRC1 602アドレスおよびSRC2 603アド レスが与えられた場合、デコーダ202は内部バス170を介してレジスタ・フ ァイル150内のレジスタ209にアクセスする。レジスタ209は、SRC1 602レジスタに記憶されているパック・データ(ソース1)およびSRC2 603に記憶されているパック・データ(ソース2)を実行装置130に与え る。すなわち、レジスタ209は内部バス170を介して実行装置130にパッ ク・データを伝達する。 ステップ2603で、デコーダ202は、実行装置130が、選択された1つ のパック論理演算を実行できるようにする。 ステップ2610で、選択された1つのパック論理演算によって、次にどのス テップを実行すべきかが決定される。実行装置130は、論理AND演算が選択 された場合にはステップ2612を実行する。実行装置130は、論理ANDN 演算が選択された場合にはステップ2613を実行する。実行装置130は、論 理OR演算が選択された場合にはステップ2614を実行する。実行装置130 は、論理XOR演算が選択された場合にはステップ2615を実行する。 論理AND演算が選択されたと仮定すると、ステップ2612が実行される。 ステップ2612で、ソース1ビット63ないし0がソース2ビット63ないし 0とANDされ、結果ビット63ないし0が生成される。 論理ANDN演算が選択されたと仮定すると、ステップ2613が実行される 。ステップ2613で、ソース1ビット63ないし0がソース2ビット63ない し0とANDNされ、結果ビット63ないし0が生成される。 論理OR演算が選択されたと仮定すると、ステップ2614が実行される。ス テップ2614で、ソース1ビット63ないし0がソース2ビット63ないし0 とORされ、結果ビット63ないし0が生成される。 論理XOR演算が選択されたと仮定すると、ステップ2615が実行される。 ステップ2615で、ソース1ビット63ないし0がソース2ビット63ないし 0とXORされ、結果ビット63ないし0が生成される。 ステップ2620で、結果がDESTレジスタに記憶される。 表36は、パック・データに対する論理ANDN演算のレジスタ内表現を示す 。第1のビット行はソース1のパック・データ表現である。第2のビット行はソ ース2のパック・データ表現である。第3のビット行は結果のパック・データ表 現である。各データ要素の下方の数はデータ要素番号である。たとえば、ソース 1データ要素は11111111000000002である。 ソース1およびソース2内の対応するデータ要素に対して同じ論理演算を実行 することに関連して本発明を説明しているが、代替実施形態では、対応するデー タ要素に対して実行される論理演算を要素ごとに選択できるようにする命令をサ ポートすることができる。 パック・データ論理回路 一実施形態では、アンパック・データに対する単一の論理演算と同じクロック ・サイクル数で複数のデータ要素に対して前述の論理演算を行うことができる。 同じクロック・サイクル数で実行するために、並行処理が使用される。 第27図は、本発明の一実施形態によってパック・データに対して論理演算を 実行する回路を示す。演算制御回路2700は、論理演算を実行する回路を制御 する。演算制御回路2700は制御信号を処理し、制御線2780上で選択信号 を出力する。このような選択信号は、AND演算、ANDN演算、OR演算、X OR演算のうちの選択された演算を論理演算回路2701に伝達する。 論理演算回路2701はソース1[63:0]およびソース2[63:0]を 受け取り、選択信号によって指示された論理演算を実行し結果を生成する。論理 演算回路2701は結果レジスタ2731に結果[63:0」を伝達する。 前述の論理演算を命令セットに含めることの利点 前述の論理命令は論理AND、論理AND NOT、論理OR、論理OR N OTを実行する。これらの命令は、データの論理処理を必要とするアプリケーシ ョンで有用である。プロセッサ109によってサポートされる命令セットにこれ らの命令を含めることによって、1つの命令でパック・データに対してこれらの 演算を実行することができる。 パック比較 パック比較演算 本発明の一実施形態では、SRC1 602レジスタは、比較される一方のデ ータ(ソース1)を含み、SRC2 603レジスタは、比較される他方のデー タ(ソース2を含み、DEST605は比較の結果(結果)を含む。すなわち、 ソース1の各データ要素は、指示された関係に従って、ソース2の各データ要素 と独立に比較される。 本発明の一実施形態では、「等しい」、「符号付きより大)」、「符号付き以 上)」、「符号なしより大」、「符号なし以下」の各比較関係がサポートされる 。この関係は、各対応データ要素対において試験される。たとえば、ソース1[ 7:0]はソース2[7:0]より大きく、結果は結果[7:0]になる。比較 の結果がこの関係を満たす場合、一実施形態では、結果内の対応するデータ要素 がすべて1にセットされる。比較の結果がこの関係を満たさない場合、結果内の 対応するデータ要素はすべて零にセットされる。 第28図は、本発明の一実施形態によってパック・データに対してパック比較 演算を実行する方法を示す流れ図である。 ステップ2801で、デコーダ202は、プロセッサ109が受け取った制御 信号207を復号する。したがって、デコーダ202は適切な比較演算に関する 命令コードと、レジスタ209内のSRC1 602アドレス、SRC2 60 3アドレス、DEST605アドレスと、パック・データ内のデータ要素の飽和 /非飽和(必ずしも比較演算には必要ではない)、符号付き/符号なし、長さを 復号する。前述のように、SRC1 602(またはSRC2 603)をDE ST605として使用することができる。 ステップ2802で、SRC1 602アドレスおよびSRC2 603アド レスが与えられた場合、デコーダ202は内部バス170を介してレジスタ・フ ァイル150内のレジスタ209にアクセスする。レジスタ209は、SRC1 602レジスタに記憶されているパック・データ(ソース1)およびSRC2 603に記憶されているパック・データ(ソース2)を実行装置130に与え る。すなわち、レジスタ209は内部バス170を介して実行装置130にパッ ク・データを伝達する。 ステップ2803で、デコーダ202は、実行装置130が適切なパック比較 演算を実行できるようにする。デコーダ202はさらに、データ要素のサイズお よび比較演算に関する関係を内部バス170を介して伝達する。 ステップ2810で、データ要素のサイズによって、次にどのステップを実行 すべきかが決定される。データ要素のサイズが8ビットである場合(パック・バ イト401データ)、実行装置130はステップ2812を実行する。しかし、 パック・データ内のデータ要素のサイズが16ビットである場合(パック・ワー ド402データ)、実行装置130はステップ2814を実行する。一実施形態 では、8ビット・データ要素サイズ・パック比較および16ビット・データ要素 サイズ・パック比較しかサポートされない。しかし、他の実施形態では32ビッ ト・データ要素サイズ・パック演算もサポートされる(パック・ダブルワード4 03)。 データ要素のサイズが8ビットであると仮定すると、ステップ2812が実行 される。ステップ2812で、下記のことが実行される。ソース1ビット7ない し0がソース2ビット7ないし0と比較され、結果ビット7ないし0が生成され る。ソース1ビット15ないし8がソース2ビット15ないし8と比較され、結 果ビット15ないし8が生成される。ソース1ビット23ないし16がソース2 ビット23ないし16と比較され、結果ビット23ないし16が生成される。ソ ース1ビット31ないし24がソース2ビット31ないし24と比較され、結果 ビット31ないし24が生成される。ソース1ビット39ないし32がソース2 ビット39ないし32と比較され、結果ビット39ないし32が生成される。ソ ース1ビット47ないし40がソース2ビット47ないし40と比較され、結果 ビット47ないし40が生成される。ソース1ビット55ないし48がソース2 ビット55ないし48と比較され、結果ビット55ないし48が生成される。ソ ース1ビット63ないし56がソース2ビット63ないし56と比較され、結果 ビット63ないし56が生成される。 データ要素のサイズが16ビットであると仮定すると、ステップ2814が実 行される。ステップ2814で、下記のことが実行される。ソース1ビット15 ないし0がソース2ビット15ないし0と比較され、結果ビット15ないし0が 生成される。ソース1ビット31ないし16がソース2ビット31ないし16と 比較され、結果ビット31ないし16が生成される。ソース1ビット47ないし 32がソース2ビット47ないし32と比較され、結果ビット47ないし32か 生成される。ソース1ビット63ないし48がソース2ビット63ないし48と 比較され、結果ビット63ないし48が生成される。 一実施形態では、ステップ2812の各比較が同時に実行される。しかし、他 の実施形態では、これらの比較が順次実行される。他の実施形態では、これらの 比較のうちのいくつかが同時に実行され、いくつかが順次実行される。この議論 はステップ2814の比較にも当てはまる。 ステップ2820で、結果がDEST605レジスタに記憶される。 表37はパック比較符号なしより大演算のレジスタ内表現である。第1のビッ ト行はソース1のパック・データ表現である。第2のビット行はソース2のパッ ク・データ表現である。第3のビット行は結果のパック・データ表現である。各 データ要素ビットの下方の数はデータ要素番号である。たとえば、ソース1デー タ要素3は100000002である。 表38はパック・バイト・データに対するパック比較符号付き以上演算のレジ スタ内表現を示す。 パック・データ比較回路 一実施形態では、アンパック・データに対する単一の比較演算と同じクロック ・サイクル数で複数のデータ要素に対して比較演算を行うことができる。同じク ロック・サイクル数で実行するために、並行処理が使用される。すなわち、各レ ジスタは、データ要素に対して比較演算を実行するよう同時に命令される。この ことについて下記で詳しく説明する。 第29図は、本発明の一実施形態によってパック・データの個別のバイトに対 してパック比較演算を実行する回路を示す。第29図は、修正バイト・スライス 比較回路、すなわちバイト・スライス段i2999の使用法を示す。各バイト・ スライスは、最上位データ要素バイト・スライスを除いて、比較装置とビット制 御装置とを含む。最上位データ要素バイト・スライスに必要なのは比較装置だけ である。 比較装置i2911および比較装置i+12971はそれぞれ、ソース1の8ビッ トをソース2の対応する8ビットと比較できるようにする。一実施形態では、各 比較装置は既知の8ビット比較回路と同様に動作する。そのような既知の8ビッ ト比較回路は、ソース1からソース2を減算できるようにするバイト・スライス 回路を含む。減算の結果は、比較演算の結果を求めるように処理される。一実施 形態では、減算の結果にオーバフロー情報が含まれる。このオーバフロー情報が 試験され、比較演算の結果が真であるかどうかが判定される。 各比較装置はソース1入力と、ソース2入力と、制御入力と、次段信号と、前 段信号と、結果出力とを有する。したがって、比較装置i2911はソース1i 2931入力と、ソース2i2933入力と、制御i2901入力と、次段i29 13信号と、前段i2912入力と、結果レジスタi2951に記憶されている結 果とを有する。したがって、比較装置i+12971はソース1i+12932入力と 、ソース2i+12934入力と、制御i+12902入力と、次段i+12973信号 と、前段i+12972入力と、結果レジスタi+12952に記憶されている結果と を有する。 ソース1n入力は通常、ソース1の8ビット部分である。この8ビットは、最 小のデータ要素タイプ、すなわち1パック・バイト401データ要素を表す。ソ ース2入力は、ソース2の対応する8ビット部分である。演算制御回路2900 は、各比較装置が必要な比較を実行できるようにする制御信号を伝送する。この 制御信号は、比較に関する関係(たとえば、符号付きより大)とデータ要素のサ イズ(たとえば、バイトまたはワード)から決定される。次段信号は、その比較 装置のビット制御装置から与えられる。比較装置は、バイトより大きなサイズの データ要素が使用されるときにはビット制御装置によって有効に組み合わされる 。たとえば、ワード・パック・データを比較する際、第1の比較装置と第2の比 較装置との間のビット制御装置によって、この2つの比較装置は1つの16ビッ ト比較装置として働く。同様に、第3の比較装置と第4の比較装置との間のビッ ト制御装置によって、この2つの比較装置は1つの比較装置として働く。これは 4つのパック・ワード・データ要素に対して同様に行われる。 比較装置は、ソース1とソース2の所望の関係および値に応じて、上位の比較 装置の結果を下位の比較装置へ伝搬させ、あるいはその逆を同様に行うことによ って比較を実行する。すなわち、各比較装置は、ビット制御装置i2920から 伝達される情報を使用して比較の結果を与える。ダブルワード・パック・データ を使用する場合、4つの比較装置は協働して各データ要素ごとに1つの32ビッ ト長比較装置を形成する。各比較装置の結果出力は、その比較装置が作用してい るソース1およびソース2の部分に対する比較演算の結果を表す。 ビット制御装置i2920はパック・データ・イネーブル信号i2906を介し て演算制御回路2900からイネーブルされる。ビット制御装置i2920は次 段i2913および前段i+12972を制御する。たとえば、比較装置i29 11がソース1およびソース2の最下位8ビットに責任を負い、比較装置i+12 971がソース1およびソース2の次の8ビットに責任を負うと仮定する。パッ ク・バイト・データに対する比較を実行する場合、ビット制御装置i2920は 比較装置i+12971からの結果情報を比較装置i2911に伝達することを許容 せず、逆もまた同様である。しかし、パック・ワードに対する比較を実行する場 合、ビット制御装置i2920は比較装置i2911からの結果(一実施形態では オーバフロー)情報を比較装置i+1に伝達することを許容し、かつ比較装置i+12 971からの結果(一実施形態ではオーバフロー)情報を比較装置i2911に 伝達することを許容する。 たとえば表39では、符号付きパック・バイトの比較が実行される。比較装置i+1 2971がデータ要素1に作用し、比較装置i2911がデータ要素0に作用 すると仮定する。比較装置i+12971はワードの上位8ビットを比較し、前段i +1 2972を介して結果情報を伝達する。比較装置i2911はワードの下位8 ビットを比較し、次段i2913を介して結果情報を伝達する。しかし、演算制 御回路2900はビット制御装置i2920に、前段i+12972および次段i2 913から受け取った結果情報の、比較装置間での伝搬を停止させる。 しかし、符号付きパック・ワードの比較を実行する場合は、比較装置i+129 71の結果が比較装置i2911に伝達され、逆もまた同様である。表40はこ の結果を示す。この種の伝達はパック・ダブルワードでも可能である。 各比較装置は任意選択で結果レジスタに結合される。結果レジスタは、完全結 果信号、すなわち結果[63:0]2960をDEST605レジスタへ伝送で きるようになるまで比較演算の結果を一時的に記憶する。 完全64ビット・パック比較回路では、8つの比較回路および7つのビット制 御装置が使用される。そのような回路を使用して、64ビット・アンパック・デ ータに対して比較を実行し、それによって、同じ回路を使用してアンパック比較 演算とパック比較演算を実行することができる。 前述のパック比較演算を命令セットに含めることの利点 前述のパック比較命令では、ソース1とソース2を比較した結果がパック・マ スクとして記憶される。前述のように、データに関する条件付き分岐は予測不能 であり、したがって、分岐予測アルゴリズムを破壊するためプロセッサ性能に影 響を及ぼす。しかし、パック・マスクを生成することによって、この比較命令は データに基づいて必要な条件付き分岐の数を減少させる。たとえば、下記の表4 1に示すようにパック・データに対して関数(if Y>A then X=X +B;else X=X)を実行することができる(表41に示した値は16進 表記で示されている)。 上記の例から分かるように、条件付き分岐はもはや必要とされない。分岐命令が 必要とされないので、分岐をスペキュラティブに予想するプロセッサは、この比 較命令を使用してこのおよび他の同様な演算を実行しても性能が低下することが ない。したがって、プロセッサ109によってサポートされる命令セットにこの 比較命令を与えることによって、プロセッサ109は、この機能を必要とするア ルゴリズムをより高い性能レベルで実行することができる。 マルチメディア・アルゴリズムの例 開示した命令セットの融通性を示すために、いくつかのマルチメディア・アル ゴリズムの例について下記で説明する。いくつかのケースでは、同様なパック・ データ命令を使用してこのようなアルゴリズムにおけるあるステップを実行する ことができる。下記の例では、データ移動、ルーピング、条件付き分岐を管理す る場合に汎用プロセッサ命令を使用する必要があるいくつかのステップを省略し た。 1)複素数の乗算 開示した乗算−加算命令を使用して、表42aに示したように、単一の命令で 2つの複素数を乗算することができる。2つの複素数(たとえばr11およびr22)の乗算は下記の数式に従って実行される。 実成分=r1・r2−i1・i2 虚成分=r1・i2+r2・i1 この命令をあらゆるクロック・サイクルで完了するように実施する場合、本発明 はあらゆるクロック・サイクルで2つの複素数を乗算することができる。 他の例として、表42bは、3つの複素数を乗算するために使用される命令を 示す。 2)乗算累算演算 開示した命令を使用して値を乗算し累算することもできる。たとえば、下記の 表43に示したように2組の4つのデータ要素(A1-4およびB1-4)を乗算し累 算することができる。一実施形態では、表43に示した命令のそれぞれが実施さ れ各クロック・サイクルが完了する。 各組のデータ要素の数が8よりも多く、かつ4の倍数である場合に、これらの 組の乗算および累算を下記の表44に示したように実行する場合、必要な命令の 数が少なくなる。 他の例として、表45はセットAおよびBならびにセットCおよびDの別々の 乗算および累算を示す。これらのセットはそれぞれ、2つのデータ要素を含む。 他の例として、表46はセットAおよびBならびにセットCおよびDの別々の 乗算および累算を示す。これらのセットはそれぞれ、4つのデータ要素を含む。 3)ドット積アルゴリズム ドット積(内積とも呼ぶ)は信号処理および行列演算に使用される。たとえば 、ドット積は、行列の積を算出する際や、ディジタル・フィルタリング演算(F IRフィルタリングやIIRフィルタリングなど)を行う際や、相関シーケンス を算出する際に使用される。多数の音声圧縮アルゴリズム(たとえば、GSMや 、G.728や、CELPや、VSELP)およびハイファイ圧縮アルゴリズム (たとえば、MPEGや副バンド・コーディング)でディジタル・フィルタリン グ演算および相関演算が広く使用されているので、ドット積の性能が向上するこ とによってこれらのアルゴリズムの性能が向上する。 2つの長さNシーケンスAおよびBのドット積は次式のように定義される。 ドット積演算の実行では、各シーケンスの対応する要素が互いに乗算され結果 が累算されドット積結果が形成される乗算累算演算が広く使用されている。 本発明では、移動演算、パック加算、乗算加算演算、パック・シフト演算を含 めることによって、パック・データを使用してドット積演算を実行することがで きる。たとえば、4つの16ビット要素を含むパック・データ・タイプを使用す る場合、 1)移動命令を用いて、Aシーケンスの4つの16ビット値にアクセスしてソ ース1を生成し、 2)移動命令を用いて、Bシーケンスの4つの16ビット値にアクセスしてソ ース2を生成し、 3)乗算−加算命令、パック加算命令、シフト命令を使用して、前述のように 乗算および累算を行うことによって、それぞれ、4つの値を含む、2つのシーケ ンスに対してドット積演算を実行することができる。 多数の要素を含むベクトルに関しては、表46に示した方法が使用され、最後 に最終結果どうしが合計される。他のサポート命令には、累算器レジスタを初期 設定するパックOR命令およびパックXOR命令と、計算の最後の段階で不要な 値をシフトオフするパック・シフト命令が含まれる。ループ制御演算は、プロセ ッサ109の命令セットにすでに存在する命令を使用して行われる。 4)二次元ループ・フィルタ ある種のマルチメディア・アルゴリズムでは二次元ループ・フィルタが使用さ れる。たとえば、下記の表47に示したフィルタ係数をビデオ会議アルゴリズム で使用して、画素データに対して低域フィルタを実行することができる。 位置(x,y)にある画素の新しい値を算出するために、下記の数式が使用さ れる。 結果ピクセル=(x−1,y−1)+2(x,y−1)+(x+1,y−1) +2(x−1,y)+4(x,y)+2(x+1,y)+ (x−1,y+1)+2(x,y+1)+(x+1,y+1) 結果的に得られる画素 本発明では、パック、アンパック、移動、パック・シフト、パック加算を含め ることによって、パック・データを使用して二次元ループ・フィルタを実施する ことができる。前述のループ・フィルタの一実施形態によれば、このループ・フ ィルタは2つの簡単な一次元フィルタとして適用され、すなわち上記の二次元フ ィルタを2つの121フィルタとして適用することができる。第1のフィルタは 水平方向にあり、それに対して第2のフィルタは垂直方向にある。 表48は、8×8ブロックの画素データの表現を示す。 この8×8ブロックの画素データに対してフィルタの水平パスを実行するとき は、下記のステップが実行される。 1)移動命令を使用して8つの8ビット画素値にパック・データとしてアクセス し、 2)累算時の精度を維持するために、8つの8ビット画素を、4つの8ビット画 素を含む16ビット・パック・データとしてアンパックし(ソース1)、 3)ソース1を2倍してソース2およびソース3を生成し、 4)ソース1に対してアンパック16ビット右シフトを実行し、 5)ソース3に対してアンパック16ビット左シフトを実行し、 6)a)ソース1=ソース1+ソース2 b)ソース1=ソース1+ソース2 c)ソース1=ソース1+ソース3 の各パック加算を実行することによって(ソース1+2*ソース2+ソース3) を生成し、 7)結果的に得られたパック・ワード・データを8×8中間結果アレイとして記 憶し、 8)下記の表49に示したように8×8中間結果アレイ全体が生成されるまで (たとえば、IA0は表49のA0の中間結果を表す)これらのステップを繰り返 す。 この8×8中間結果アレイに対してフィルタの垂直パスを実行するときは、下 記のステップが実行される。 1)移動命令を用いて、中間結果アレイの4×4データ・ブロックにパック・デ ータとしてアクセスしてソース1、ソース2、ソース3を生成し(一例として表 50を参照されたい)、 2)a)ソース1=ソース1+ソース2 b)ソース1=ソース1+ソース2 c)ソース1=ソース1+ソース3 の各パック加算を実行することによって(ソース1+2*ソース2+ソース3) を生成し、 3)結果的に得られたソース1に対してパック4ビット右シフトを実行して加重 の和を生成し(これは実際上、16で除算される)、 4)結果的に得られたソース1を飽和を用いてパックして16ビット値を8ビッ ト画素値に変換し、 6)結果的に得られたパック・ワード・データを8×8結果アレイとして記憶し (表50に示した例に関しては、この4バイトはB0、B1、B2、B3の新しい画 素値を表す)、 7)8×8結果アレイ全体が生成されるまでこれらのステップを繰り返す。 8×8結果アレイの1番上の行および1番下の行が、本発明を曖昧にしないよ うに本明細書には記載していない異なるアルゴリズムを使用して求められること に留意されたい。 したがって、本発明は、パック命令、アンパック命令、移動命令、パック・シ フト命令、パック加算命令をプロセッサ109上に与えることによって、そのよ うなフィルタが必要とする演算を一度に1データ要素ずつ実行しなければならな い従来技術の汎用プロセッサと比べて性能を著しく向上させることができる。 5)運動推定 いくつかのマルチメディアアプリケーション(たとえば、ビデオ会議やMPE G(高品質ビデオ再生))で運動推定が使用されている。ビデオ会議に関しては 、運動推定を使用して、端末間で伝送しなければならないデータの量が低減され る。運動推定は、ビデオ・フレームを固定サイズのビデオ・ブロックに分割する ことによって行われる。フレーム1内の各ブロックごとに、フレーム2に同様な 画像を含むブロックがあるかどうかが判定される。フレーム2にそのようなブロ ックが含まれる場合、運動ベクトル基準を用いてそのブロックをフレーム1に記 述することができる。したがって、そのブロックを表すすべてのデータを伝送す るのではなく、運動ベクトルを受信側端末へ伝送するだけでよい。たとえば、フ レーム1内のあるブロックがフレーム2内のあるブロックに類似しており、後者 のブロックと同じ画面座標にある場合、そのブロックへ送る必要があるのは運動 ベクトル0だけである。しかし、フレーム1内のあるブロックがフレーム2内の あるブロックに類似しているが後者のブロックとは異なる画面座標にある場合、 その ブロックの新しい位置を示す運動ベクトルを送るだけでよい。一実施形態によれ ば、フレーム1内のあるブロックAがフレーム2内のあるブロックBに類似して いるかどうかを判定するために、画素値間の絶対差の和が求められる。この和が 小さければ小さいほど、ブロックAはブロックBに類似している(すなわち、こ の和が零である場合、ブロックAはブロックBと同一である)。 本発明では、飽和演算および論理演算を含む移動、アンパック、パック加算、 パック減算を含めることによって、パック・データを使用して運動推定を実行す ることができる。たとえば、2つの16×16ビデオ・ブロックを、パック・デ ータとして記憶されている2つの8ビット両素値アレイとして表す場合、これら のブロック内の画素値は、 1)移動命令を用いて、ブロックAの8つの8ビット値にアクセスしてソース 1を生成し、 2)移動命令を用いて、ブロックBの8つの8ビット値にアクセスしてソース 2を生成し、 3)パック減算を飽和と共に実行し、ソース2からソース1を減算してソース 3を生成し(飽和を用いて減算することによって、ソース3にはこの減算の正の 結果しか含まれない(すなわち、負の結果は零になる))、 4)パック減算を飽和と共に実行し、ソース1からソース2を減算してソース 4を生成し(飽和を用いて減算することによって、ソース4にはこの減算の正の 結果しか含まれない(すなわち、負の結果は零になる))、 5)ソース3およびソース4に対してパックOR演算を実行してソース5を生 成し(このOR演算を実行することによって、ソース5にはソース1およびソー ス2の絶対値が含まれる)、 6)16×16ブロックが処理されるまでこれらのステップを繰り返すことに よって算出することができる。 結果的に得られた8ビット絶対値は、16ビット精度が得られるように16ビッ ト・データ要素としてアンパックされ、次いでパック加算を使用して加算される 。 したがって、本発明は、飽和を含む移動、アンパック、パック加算、パック減 算をプロセッサ109上に与えることによって、運動推定演算の加算および絶対 差を一度に1データ要素ずつ実行しなければならない従来技術の汎用プロセッサ と比べて性能を著しく向上させることができる。 6)離散余弦変換 離散余弦変換(DCT)は、多数の信号処理アルゴリズムで使用されている周 知の機能である。特に、ビデオ圧縮アルゴリズムおよび画像圧縮アルゴリズムで はこの変換が広く使用されている。 画像圧縮アルゴリズムおよびビデオ圧縮アルゴリズムでは、DCTを使用して 画素のブロックが空間表現から周波数表現に変換される。周波数変換では、画像 情報が周波数成分に分割され、このうちのいくつかの成分は他の成分よりも重要 である。圧縮アルゴリズムは、再構築された画像内容に悪影響を与えない周波数 成分を選択的に量子化または破棄する。このように、圧縮が行われる。 DCTの多数の実施形態があり、そのうちで最も広く使用されているのは、高 速フーリエ変換(FFT)計算フローに基づいてモデル化されたある種の高速変 換方法である。この高速変換では、オーダーN変換がオーダーN/2変換の組合 せに分解され、結果が再び組み合わされる。この分解は、最小のオーダー2変換 に達するまで行うことができる。この基本2変換カーネルはしばしば、蝶形演算 と呼ばれる。蝶形演算は次式のように表される。 X=a*x+b*y Y=c*x−d*y 上式で、a、b、c、dは係数と呼ばれ、xおよびyは入力データであり、Xお よびYは変換出力である。 本発明では、移動演算、乗算−加算演算、パック・シフト演算を含めることに よって、パック・データを使用して下記のようにDCT演算を実行することがで きる。 1)移動命令およびアンパック命令を用いて、xおよびyを表す2つの16ビ ット値にアクセスしてソース1を生成し(下記の表51を参照されたい)、 2)下記の表51に示したようにソース2を生成し(いくつかの蝶形演算にわ たってソース2を再使用できることに留意されたい)、 3)ソース1およびソース2を用いて乗算−加算命令を実行して結果を生成す る(下記の表51を参照されたい)。 いくつかの状況では、蝶形演算の係数は1である。この場合、蝶形演算は、パッ ク加算命令およびパック減算命令を使用して実行できる加算および減算のみに縮 退する。 IEEE文書において、ビデオ会議に関して逆DCTを実行する場合の精度が 指定されている(IEEE Circuits and Systems So ciety、「IEEE Standard Specifications for the Implementations of 8×8 Inver se Discrete Cosine Transform」(IEEE S td.1180年−1990年、IEEE Inc.345 East 47t h St.、NY、NY10017、米国、1991年3月18日)を参照され たい)。必要な精度は、開示した乗算−加算命令によって満たされる。なぜなら 、この命令が16ビット入力を使用して32ビット出力を生成するからである。 したがって、本発明は、移動演算、乗算−加算演算、パック・シフト演算をプ ロセッサ109上に与えることによって、DCT演算の加算および乗算を一度に 1データ要素ずつ実行しなけれぱならない従来技術の汎用プロセッサと比べて性 能を著しく向上させることができる。 代替実施形態 それぞれの異なる演算が別々の回路を有するものとして本発明を説明したが、 ある回路がいくつかの異なる演算によって共用されるように代替実施形態を実施 することができる。たとえば、一実施形態では、1)パック加算、パック減算、 パック比較演算、パック論理演算を実行する単一の論理演算装置(ALU)、2 )パック演算、アンパック演算、パック・シフト演算を実行する回路装置、3) パック乗算演算および乗算−加算演算を実行する回路装置、4)ポピュレーショ ン・カウント演算を実行する回路装置の各回路が使用される。 「対応する」および「それぞれの」の語は本明細書では、2つ以上のパック・ データに記憶されているデータ要素間の所定の関係を指すために使用される。一 実施形態では、この関係はパック・データ内のデータ要素のビット位置に基づく ものである。たとえば、第1のパック・データの(たとえば、パック・バイト・ フォーマットでビット位置0ないし7に記憶された)データ要素0は、第2のパ ック・データの(たとえば、パック・バイト・フォーマットでビット位置0ない し7に記憶された)データ要素0に対応する。しかし、この関係は代替実施形態 では異なる。たとえば、第1のパック・データおよび第2のパック・データ内の 対応するデータ要素はそれぞれの異なるサイズのものでよい。他の例として、第 1のパック・データの最下位データ要素が第2のパック・データの最下位データ 要素に対応する(以下同様)のではなく、第1および第2のパック・データ内の データ要素が他の何らかのオーダーで互いに対応することができる。他の例とし て、第1および第2のパック・データ内のデータ要素は、1対1で対応するので はなく異なる比で対応することができる(たとえば、第1のパック・データは、 第2のパック・データ内の2つ以上の異なるデータ要素に対応する1つまたは複 数のデータ要素を有することができる)。 本発明をいくつかの実施形態に関して説明したが、当業者には、本発明が前述 の実施形態に限らないことが認識されよう。本発明の方法および装置は、添付の 請求の範囲の趣旨および範囲内で修正および変更を加えて実施することができる 。したがって、この説明は本発明を制限するものではなく例示的なものとみなさ れる。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(KE,LS,MW,SD,S Z,UG),UA(AM,AZ,BY,KG,KZ,MD ,RU,TJ,TM),AL,AM,AT,AT,AU ,AZ,BB,BG,BR,BY,CA,CH,CN, CU,CZ,CZ,DE,DE,DK,DK,EE,E E,ES,FI,FI,GB,GE,HU,IL,IS ,JP,KE,KG,KP,KR,KZ,LK,LR, LS,LT,LU,LV,MD,MG,MK,MN,M W,MX,NO,NZ,PL,PT,RO,RU,SD ,SE,SG,SI,SK,SK,TJ,TM,TR, TT,UA,UG,US,UZ,VN (72)発明者 ミタル,ミリンド アメリカ合衆国・カリフォルニア州・サウ スサンフランシスコ・ヒルサイド ブルバ ード・1149 (72)発明者 メネマイヤー,ラリー・エム アメリカ合衆国・95006・カリフォルニア 州・ブルダークリーク・番地なし・ピイオ ー ボックス・587 (72)発明者 エイタン,ベニー イスラエル国・ハイファ・スティーブン ワイズ・25 (72)発明者 グルー,アンドリュー・エフ アメリカ合衆国・97124・オレゴン州・ヒ ルズボロー・ノースイースト キャスリ ン・825 (72)発明者 デュロング,キャロル アメリカ合衆国・95070・カリフォルニア 州・サラトガ・ハーレイ ドライブ・ 18983 (72)発明者 小鷲 英一 アメリカ合衆国・94086・カリフォルニア 州・サニーベイル・ノース ウルフ ロー ド・355・アパートメント 618 (72)発明者 ウィット,ウルフ アメリカ合衆国・94598・カリフォルニア 州・ウォルナットクリーク・サン アント ニオ ドライブ・2622

Claims (1)

  1. 【特許請求の範囲】 25.プロセッサであって、 第1の複数のデータ要素の各データ要素が第2の複数のデータ要素のあるデー タ要素に対応する、それぞれ、第1の複数のデータ要素と第2の複数のデータ要 素とを含む、第1のパック・データと第2のパック・データとを含むように構成 された記憶域と、 命令を復号するように構成されたデコーダと、 記憶域およびデコーダに結合され、アンパック命令に応答して、第1および第 2の複数のデータ要素のうちのある対応するデータ要素を同時に、第3のパック ・データ内の複数の結果データ要素として記憶域にコピーするように構成された 第1の回路と、 記憶域およびデコーダに結合され、パック命令に応答して、第1および第2の 複数のデータ要素の各データ要素の一部を同時に、第3のパック・データ内の複 数の結果データ要素として記憶域にコピーするように構成された第2の回路と、 記憶域およびデコーダに結合され、乗算命令に応答して、第1の複数のデータ 要素の各データ要素を同時に第2の複数のデータ要素の対応するデータ要素に乗 算し、各結果データ要素が上位ビットまたは下位ビットのみを含む第3のパック ・データ内の複数の結果データ要素を生成するように構成された第3の回路と、 記憶域およびデコーダに結合され、加算命令に応答して、第1の複数のデータ 要素の各データ要素を同時に第2の複数のデータ要素の対応するデータ要素に加 算し、第3のパック・データ内の複数の結果データ要素を生成するように構成さ れた第4の回路と、 記憶域およびデコーダに結合され、減算命令に応答して、第1の複数のデータ 要素の各データ要素を同時に第2の複数のデータ要素の対応するデータ要素から 減算し、第3のパック・データ内の複数の結果データ要素を生成するように構成 された第5の回路と、 記憶域およびデコーダに結合され、第1のパック・データ内の各データ要素を 同時に第2の複数のデータ要素の対応するデータ要素と比較するように構成され 、 さらに、各マスク要素が、対応する比較を表し、かつ対応する比較が真であるか 、それとも偽であるかに基づいて第1の所定の値と第2の所定の値のどちらかを すべてのビットが有する複数のビットを含む、複数のマスク要素を有するパック ・マスクを生成するように構成された第6の回路と、 記憶域およびデコーダに結合され、シフト命令に応答して、第1の複数のデー タ要素の各データ要素を独立にシフト・カウントだけシフトするように構成され た第7の回路と を備えることを特徴とするプロセッサ。 26.さらに、 記憶域およびデコーダに結合され、乗算−加算命令に応答して、第1の複数の データ要素の各データ要素を同時に第2の複数のデータ要素の対応するデータ要 素に乗算して複数の中間結果データ要素を生成し、隣接する中間結果データ要素 を同時に加算して第3のパック・データ内の複数の結果データ要素を生成するよ うに構成された第8の回路を備えることを特徴とする請求項25に記載のプロセ ッサ。 27.さらに、記憶域およびデコーダに結合され、ポピュレーション・カウント 命令に応答して、少なくとも第1および第2の結果データ要素を有する結果パッ ク・データを同時に生成するように構成された第9の回路を備え、第1の結果デ ータ要素が、第1の複数のデータ要素の第1のデータ要素内の総数ビット・セッ トを表し、第2の結果データ要素が、第1の複数のデータ要素の第2のデータ要 素内の総数ビット・セットを表すことを特徴とする請求項25に記載のプロセッ サ。 28.さらに、 記憶域およびデコーダに結合され、論理AND命令に応答して、第1の複数の データ要素の各データ要素と第2の複数のデータ要素の対応するデータ要素との 論理ANDを同時にとり第3のパック・データ内の複数の結果データ要素を生成 するように構成された第10の回路と、 記憶域およびデコーダに結合され、第2の論理AND命令に応答して、第1の 複数のデータ要素の各データ要素の逆数と第2の複数のデータ要素の対応するデ ータ要素との論理ANDを同時にとり第3のパック・データ内の複数の結果デー タ要素を生成するように構成された第11の回路と、 記憶域およびデコーダに結合され、論理OR命令に応答して、第1の複数のデ ータ要素の各データ要素と第2の複数のデータ要素の対応するデータ要素との論 理ORを同時にとり第3のパック・データ内の複数の結果データ要素を生成する ように構成された第12の回路と、 記憶域およびデコーダに結合され、論理OR命令に応答して、第1の複数のデ ータ要素の各データ要素の逆数と第2の複数のデータ要素の対応するデータ要素 との論理ORを同時にとり第3のパック・データ内の複数の結果データ要素を生 成するように構成された第13の回路と を備えることを特徴とする請求項25に記載のプロセッサ。 29.第7の回路がさらに、各データ要素において、シフト・カウント数のビッ トに零を充填するように構成されることを特徴とする請求項25に記載のプロセ ッサ。 30.第7の回路がさらに、各データ要素において、シフト・カウント数のビッ トにそれぞれのデータ要素の符号ビットを充填するように構成されることを特徴 とする請求項25に記載のプロセッサ。 31.第1の回路がさらに、第1の複数のデータ要素のうちの半数のデータ要素 を同時に第2の複数のデータ要素のうちの半数のデータ要素にコピーするように 構成されることを特徴とする請求項25に記載のプロセッサ。 32.第1および第2の複数のデータ要素からコピーされる対応するデータ要素 が、記憶域に、複数の結果データ要素として互いに隣接してコピーされることを 特徴とする請求項31に記載のプロセッサ。 33.第1の複数のデータ要素が、第1のパック・データ内と同じ順序でコピー されることを特徴とする請求項32に記載のプロセッサ。 34.第2の回路によってコピーされる各データ要素の一部が、第1および第2 の複数のデータ要素の各データ要素の下位ビットと上位ビットのどちらかである ことを特徴とする請求項25に記載のプロセッサ。 35.第1の複数のデータ要素の各部が、第3のパック・データに、複数の結果 データ要素として互いに隣接してコピーされることを特徴とする請求項34に記 載のプロセッサ。 36.第1および第2の複数のデータ要素が、第1および第2のパック・データ 内と同じ順序で第3のパック・データにコピーされることを特徴とする請求項3 5に記載のプロセッサ。 37.第1および第2の複数のデータ要素がそれぞれ、各データ要素が32ビッ トを表す2つのデータ要素を含むことを特徴とする請求項25に記載のプロセッ サ。 38.第1および第2の複数のデータ要素がそれぞれ、各データ要素が16ビッ トを表す4つのデータ要素を含むことを特徴とする請求項25に記載のプロセッ サ。 39.第1および第2の複数のデータ要素がそれぞれ、各データ要素が8ビット を表す8つのデータ要素を含むことを特徴とする請求項25に記載のプロセッサ 。 40.プロセッサであって、 第1の複数のデータ要素を有する第1のパック・データを含むように構成され た第1の記憶域と、 それぞれ、第1の複数のデータ要素のそれぞれの異なるデータ要素に対応する 、第2の複数のデータ要素を有する第2のパック・データを含むように構成され た第2の記憶域と、 第1の記憶域に対応する第1のアドレスと、第2の記憶域に対応する第2のア ドレスと、第3の記憶域に対応する宛先アドレスと、少なくとも第1の複数のデ ータ要素に対して実行される演算とを示す命令を復号するように構成されたデコ ーダと、 記憶域およびデコーダに結合され、アンパック命令に応答して、第1および第 2の複数のデータ要素のうちのある対応するデータ要素を、第3のパック・デー タ内の複数の結果データ要素として第3の記憶域に並行してコピーするように構 成された第1の回路と、 記憶域およびデコーダに結合され、パック命令に応答して、第1および第2の 複数のデータ要素の各データ要素の一部を、第3のパック・データ内の複数の結 果データ要素として第3の記憶域に並行してコピーするように構成された第2の 回路と、 記憶域およびデコーダに結合され、乗算命令に応答して、第1の複数のデータ 要素の各データ要素を並行して第2の複数のデータ要素のそれぞれの異なる対応 するデータ要素に乗算し、各データ要素が上位ビットまたは下位ビットのみを含 む第3のパック・データ内の複数のデータ要素を生成するように構成された第3 の回路と、 記憶域およびデコーダに結合され、加算命令に応答して、第1の複数のデータ 要素の各データ要素を並行して第2の複数のデータ要素のそれぞれの異なる対応 するデータ要素に加算し、第3のパック・データ内の複数のデータ要素を生成す るように構成された第4の回路と、 記憶域およびデコーダに結合され、減算命令に応答して、第1の複数のデータ 要素の各データ要素を並行して第2の複数のデータ要素のそれぞれの異なる対応 するデータ要素から減算し、第3のパック・データ内の複数のデータ要素を生成 するように構成された第5の回路と、 記憶域およびデコーダに結合され、第1のパック・データ内の各データ要素を 並行して第2の複数のデータ要素のそれぞれの異なる対応するデータ要素と比較 するように構成され、さらに、各マスク要素が、第6の回路が第1のパック・デ ータ内の各データ要素を並行して第2の複数のデータ要素のそれぞれの異なる対 応するデータ要素と比較することによって生成された対応する比較を表し、各マ スク要素が、対応する比較が真であるか、それとも偽であるかに基づいて第1の 所定の値と第2の所定の値のどちらかをすべてのビットが有する複数のビットを 含む、複数のマスク要素を有するパック・マスクを生成するように構成された第 6の回路と、 記憶域およびデコーダに結合され、シフト命令に応答して、第1の複数のデー タ要素の各データ要素を独立にシフト・カウントだけシフトするように構成され た第7の回路とを備えることを特徴とするプロセッサ。 41.さらに、 記憶域およびデコーダに結合され、乗算−加算命令に応答して、第1の複数の データ要素の各データ要素を並行して第2の複数のデータ要素のそれぞれの異な る対応するデータ要素に乗算して複数のデータ要素を生成し、第3の複数のデー タ要素の隣接するデータ要素を並行して加算して第3のパック・データ内の第4 の複数のデータ要素を生成するように構成された、第8の回路を備えることを特 徴とする請求項40に記載のプロセッサ。 42.さらに、記憶域およびデコーダに結合され、ポピュレーション・カウント 命令に応答して、少なくとも第1および第2の結果データ要素を有する結果パッ ク・データを並行して生成するように構成された、第9の回路を備え、第1の結 果データ要素が、第1の複数のデータ要素の第1のデータ要素内の総数ビット・ セットを表し、第2の結果データ要素が、第1の複数のデータ要素の第2のデー タ要素内の総数ビット・セットを表すことを特徴とする請求項41に記載のプロ セッサ。 43.さらに、 記憶域およびデコーダに結合され、論理AND命令に応答して、第1の複数の データ要素の各データ要素と第2の複数のデータ要素のそれぞれの異なる対応す るデータ要素との論理ANDを並行してとり第3のパック・データ内の複数のデ ータ要素を生成するように構成された第10の回路と、 記憶域およびデコーダに結合され、第2の論理AND命令に応答して、第1の 複数のデータ要素の各データ要素の逆数と第2の複数のデータ要素のそれぞれの 異なる対応するデータ要素との論理ANDを並行してとり第3のパック・データ 内の複数のデータ要素を生成するように構成された第11の回路と、 記憶域およびデコーダに結合され、論理OR命令に応答して、第1の複数のデ ータ要素の各データ要素と第2の複数のデータ要素のそれぞれの異なる対応する データ要素との論理ORを並行してとり第3のパック・データ内の複数のデータ 要素を生成するように構成された第12の回路と、 記憶域およびデコーダに結合され、論理OR命令に応答して、第1の複数のデ ータ要素の各データ要素の逆数と第2の複数のデータ要素のそれぞれの異なる対 応するデータ要素との論理ORを並行してとり第3のパック・データ内の複数の データ要素を生成するように構成された第13の回路と を備えることを特徴とする請求項42に記載のプロセッサ。 44.第7の回路がさらに、論理シフト命令に応答して、第1の複数のデータ要 素の各データ要素を並行して論理的にシフトするように構成され、各データ要素 内のシフト・カウント数のビットに零が充填されることを特徴とする請求項40 に記載のプロセッサ。 45.第7の回路がさらに、演算シフト命令に応答して、第1の複数のデータ要 素の各データ要素に対して演算シフトを独立にかつ並行して実行するように構成 され、各データ要素内のシフト・カウント数のビットにそれぞれのデータ要素の 符号ビットが充填されることを特徴とする請求項40に記載のプロセッサ。 46.第1の回路がさらに、アンパック命令に応答して、第1の複数のデータ要 素のうちの半数のデータ要素と第2の複数のデータ要素のうちの半数のデータ要 素を並行してコピーするように構成されることを特徴とする請求項40に記載の プロセッサ。 47.第1および第2の複数のデータ要素からコピーされる対応するデータ要素 が、第1の回路によって、第3の記憶域に、第3の複数のデータ要素として互い に隣接して配置されることを特徴とする請求項46に記載のプロセッサ。 48.第1の回路によってコピーされる第1の複数のデータ要素がそれぞれ、第 1のパック・データ内と同じ順序で第3のパック・データにコピーされることを 特徴とする請求項47に記載のプロセッサ。 49.第2の回路によってコピーされる各データ要素の一部が、第1および第2 の複数のデータ要素の各データ要素内の半数のビットであることを特徴とする請 求項40に記載のプロセッサ。 50.第2の回路によってコピーされる各データ要素の一部が、第1および第2 の複数のデータ要素の下位ビットと上位ビットのどちらかであることを特徴とす る請求項49に記載のプロセッサ。 51.第2の回路によって第1の複数のデータ要素のデータ要素からコピーされ る部分が、第3の複数のデータ要素内に隣接して配置されることを特徴とする請 求項50に記載のプロセッサ。 52.第1および第2の複数のデータ要素からコピーされる部分が、第1および 第2のパック・データ内と同じ順序で第3のパック・データにコピーされること を特徴とする請求項51に記載のプロセッサ。 53.第1および第2の複数のデータ要素がそれぞれ、各データ要素が32ビッ トを表す2つのデータ要素を含むことを特徴とする請求項40に記載のプロセッ サ。 54.第1および第2の複数のデータ要素がそれぞれ、各データ要素が16ビッ トを表す4つのデータ要素を含むことを特徴とする請求項40に記載のプロセッ サ。 55.第1および第2の複数のデータ要素がそれぞれ、各データ要素が8ビット を表す8つのデータ要素を含むことを特徴とする請求項40に記載のプロセッサ 。
JP51025297A 1995-08-31 1996-07-17 パック・データを処理する1組の命令 Expired - Lifetime JP3711147B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US52136095A 1995-08-31 1995-08-31
US08/521,360 1995-08-31
PCT/US1996/011893 WO1997008608A1 (en) 1995-08-31 1996-07-17 A set of instructions for operating on packed data

Publications (2)

Publication Number Publication Date
JPH11511575A true JPH11511575A (ja) 1999-10-05
JP3711147B2 JP3711147B2 (ja) 2005-10-26

Family

ID=24076444

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51025297A Expired - Lifetime JP3711147B2 (ja) 1995-08-31 1996-07-17 パック・データを処理する1組の命令

Country Status (9)

Country Link
EP (2) EP0847551B1 (ja)
JP (1) JP3711147B2 (ja)
KR (1) KR19990044304A (ja)
CN (23) CN103455304B (ja)
AU (1) AU6677896A (ja)
BR (2) BR9612911B1 (ja)
HK (2) HK1099095A1 (ja)
TW (1) TW310406B (ja)
WO (1) WO1997008608A1 (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002544587A (ja) * 1999-05-12 2002-12-24 アナログ デバイセス インコーポレーテッド デジタル信号プロセッサ計算コア
US7185176B2 (en) 2002-06-03 2007-02-27 Matsushita Electric Industrial Co., Ltd, Processor executing SIMD instructions
JP2009037599A (ja) * 2002-08-09 2009-02-19 Marvell World Trade Ltd アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム
JP2010504594A (ja) * 2006-09-22 2010-02-12 インテル コーポレイション 文字列を処理するための命令及び論理回路
JP2012530978A (ja) * 2009-12-17 2012-12-06 インテル・コーポレーション 単一命令でシフトおよび排他的論理和演算を行う方法および装置
JP2014179076A (ja) * 2013-03-14 2014-09-25 Intel Corp 複数データ要素対複数データ要素比較プロセッサ、方法、システム、および命令
JP2015007993A (ja) * 2006-09-21 2015-01-15 インテル コーポレイション 論理比較動作を実行するための装置
JP2015534189A (ja) * 2012-09-28 2015-11-26 インテル・コーポレーション 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
JP5853177B2 (ja) * 2011-04-08 2016-02-09 パナソニックIpマネジメント株式会社 データ処理装置、及びデータ処理方法
JP2016527650A (ja) * 2013-08-06 2016-09-08 インテル・コーポレーション ベクトルポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
JP2016529617A (ja) * 2013-08-06 2016-09-23 インテル・コーポレーション ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
JP2016194929A (ja) * 2006-05-10 2016-11-17 クゥアルコム・インコーポレイテッドQualcomm Incorporated マイクロプロセッサ内において複数のレジスタユニットからの対応する半語ユニットを結合するための方法及びシステム
JP2017539013A (ja) * 2014-12-23 2017-12-28 インテル・コーポレーション 競合検出を実行するための方法および装置
WO2020039522A1 (ja) * 2018-08-22 2020-02-27 日本電気株式会社 情報処理装置、情報処理方法及びプログラム

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738793B2 (en) 1994-12-01 2004-05-18 Intel Corporation Processor capable of executing packed shift operations
CN103455304B (zh) * 1995-08-31 2016-04-27 英特尔公司 用于处理指令集的处理器
US6145068A (en) * 1997-09-16 2000-11-07 Phoenix Technologies Ltd. Data transfer to a non-volatile storage medium
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
WO1999048025A2 (en) 1998-03-18 1999-09-23 Koninklijke Philips Electronics N.V. Data processing device and method of computing the cosine transform of a matrix
US6233671B1 (en) 1998-03-31 2001-05-15 Intel Corporation Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions
US6230257B1 (en) 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US7395302B2 (en) 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
US6192467B1 (en) * 1998-03-31 2001-02-20 Intel Corporation Executing partial-width packed data instructions
US7392275B2 (en) 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US7117342B2 (en) 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
US7114056B2 (en) 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
JP3336986B2 (ja) * 1999-02-03 2002-10-21 日本電気株式会社 信号処理プロセッサ及びそれに用いる丸め機能付き積和演算器
US6678810B1 (en) 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
US6671795B1 (en) 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US7039906B1 (en) * 2000-09-29 2006-05-02 International Business Machines Corporation Compiler for enabling multiple signed independent data elements per register
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US20040054877A1 (en) 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
US7739319B2 (en) 2001-10-29 2010-06-15 Intel Corporation Method and apparatus for parallel table lookup using SIMD instructions
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US7392368B2 (en) 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
AU2003256870A1 (en) 2002-08-09 2004-02-25 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US7293056B2 (en) * 2002-12-18 2007-11-06 Intel Corporation Variable width, at least six-way addition/accumulation instructions
US7139900B2 (en) 2003-06-23 2006-11-21 Intel Corporation Data packet arithmetic logic devices and methods
US7424501B2 (en) 2003-06-30 2008-09-09 Intel Corporation Nonlinear filtering and deblocking applications utilizing SIMD sign and absolute value operations
US7426749B2 (en) * 2004-01-20 2008-09-16 International Business Machines Corporation Distributed computation in untrusted computing environments using distractive computational units
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
US8024551B2 (en) * 2005-10-26 2011-09-20 Analog Devices, Inc. Pipelined digital signal processor
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
CN100461095C (zh) * 2007-11-20 2009-02-11 浙江大学 一种支持多模式的媒体增强流水线乘法单元设计方法
CN101685388B (zh) * 2008-09-28 2013-08-07 北京大学深圳研究生院 执行比较运算的方法和装置
US8504807B2 (en) 2009-12-26 2013-08-06 Intel Corporation Rotate instructions that complete execution without reading carry flag
WO2013095513A1 (en) 2011-12-22 2013-06-27 Intel Corporation Packed data operation mask shift processors, methods, systems, and instructions
CN107967149B (zh) * 2011-12-23 2021-12-10 英特尔公司 从源写掩码寄存器在目的地写掩码寄存器中设置输出掩码的***、装置和方法
CN107741861B (zh) * 2011-12-23 2022-03-15 英特尔公司 用于混洗浮点或整数值的装置和方法
US9864602B2 (en) 2011-12-30 2018-01-09 Intel Corporation Packed rotate processors, methods, systems, and instructions
US9990202B2 (en) 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US9405539B2 (en) * 2013-07-31 2016-08-02 Intel Corporation Providing vector sub-byte decompression functionality
US10768930B2 (en) * 2014-02-12 2020-09-08 MIPS Tech, LLC Processor supporting arithmetic instructions with branch on overflow and methods
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
CN104778147B (zh) * 2015-04-14 2017-06-06 飞天诚信科技股份有限公司 一种基于协处理器的数据处理方法
US11204764B2 (en) * 2016-03-31 2021-12-21 Intel Corporation Processors, methods, systems, and instructions to Partition a source packed data into lanes
CN107766079B (zh) * 2016-08-19 2022-03-11 北京百度网讯科技有限公司 处理器以及用于在处理器上执行指令的方法
US10296292B2 (en) * 2016-10-20 2019-05-21 Advanced Micro Devices, Inc. Dynamic variable precision computation
US10409603B2 (en) * 2016-12-30 2019-09-10 Intel Corporation Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory
US10162633B2 (en) * 2017-04-24 2018-12-25 Arm Limited Shift instruction
CN107145334B (zh) * 2017-04-26 2020-10-09 龙芯中科技术有限公司 常量获取方法、装置、处理器及计算机可读存储介质
CN109388427A (zh) * 2017-08-11 2019-02-26 龙芯中科技术有限公司 向量处理方法、向量处理单元和微处理器
CN107861709B (zh) * 2017-12-01 2021-04-02 中国兵器装备集团自动化研究所 适应前端高速处理的累加器和功率谱累加器及其累加方法
CN108595149B (zh) * 2018-04-28 2021-05-04 天津芯海创科技有限公司 可重构乘加运算装置
CN110554886B (zh) * 2018-05-30 2021-12-10 赛灵思公司 数据拆分结构、方法及其片上实现
CN109783054B (zh) * 2018-12-20 2021-03-09 中国科学院计算技术研究所 一种rsfq fft处理器的蝶形运算处理方法及***
CN110221807B (zh) * 2019-06-06 2021-08-03 龙芯中科(合肥)技术有限公司 数据移位方法、装置、设备及计算机可读存储介质
CN111258538B (zh) * 2020-01-13 2023-07-21 电子科技大学 一种基于fpga的大位宽高性能加法器电路
CN112230886B (zh) * 2020-09-11 2022-11-08 清华大学 免除Toom-Cook的处理装置和基于其的模乘获取方法
CN112181354B (zh) * 2020-10-12 2021-08-10 上海芯旺微电子技术有限公司 一种移位饱和同步处理的方法及其应用
CN112181355B (zh) * 2020-10-12 2021-08-06 上海芯旺微电子技术有限公司 一种移位饱和处理方法及其应用
US20230297371A1 (en) * 2022-03-15 2023-09-21 Intel Corporation Fused multiple multiplication and addition-subtraction instruction set

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE310008B (ja) * 1965-06-30 1969-04-14 Ericsson Telefon Ab L M
JPS5955546A (ja) * 1982-09-24 1984-03-30 Fujitsu Ltd フア−ムウエア処理装置
JPS60134974A (ja) * 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
JPS6284335A (ja) * 1985-10-09 1987-04-17 Hitachi Ltd 乗算回路
JPS6297060A (ja) * 1985-10-23 1987-05-06 Mitsubishi Electric Corp デイジタルシグナルプロセツサ
JP2634609B2 (ja) * 1987-10-16 1997-07-30 富士通テン株式会社 データ転送装置
US4985848A (en) * 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
US4933847A (en) * 1987-11-17 1990-06-12 International Business Machines Corporation Microcode branch based upon operand length and alignment
US5126964A (en) * 1988-04-01 1992-06-30 Digital Equipment Corporation High performance bit-sliced multiplier circuit
EP0344347B1 (de) * 1988-06-02 1993-12-29 Deutsche ITT Industries GmbH Einrichtung zur digitalen Signalverarbeitung
US5073969A (en) * 1988-08-01 1991-12-17 Intel Corporation Microprocessor bus interface unit which changes scheduled data transfer indications upon sensing change in enable signals before receiving ready signal
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
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
JP2984463B2 (ja) * 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
US5257214A (en) * 1992-06-16 1993-10-26 Hewlett-Packard Company Qualification of register file write enables using self-timed floating point exception flags
US5295229A (en) * 1992-06-17 1994-03-15 Motorola, Inc. Circuit and method for determining membership in a set during a fuzzy logic operation
US5263125A (en) * 1992-06-17 1993-11-16 Motorola, Inc. Circuit and method for evaluating fuzzy logic rules
EP0581986A1 (de) * 1992-08-04 1994-02-09 Siemens Nixdorf Informationssysteme Aktiengesellschaft Datenverarbeitungsanlage mit Verarbeitung von Aufbereitungsbefehlen
JPH0682269A (ja) * 1992-09-03 1994-03-22 Matsushita Electric Ind Co Ltd エンコーダ信号逓倍回路
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
US5375080A (en) * 1992-12-18 1994-12-20 Xerox Corporation Performing arithmetic on composite operands to obtain a binary outcome for each multi-bit component
US5717616A (en) * 1993-02-19 1998-02-10 Hewlett-Packard Company Computer hardware instruction and method for computing population counts
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
EP0654733B1 (en) * 1993-11-23 2000-05-24 Hewlett-Packard Company Parallel data processing in a single processor
US5442581A (en) * 1993-11-30 1995-08-15 Texas Instruments Incorporated Iterative division apparatus, system and method forming plural quotient bits per iteration
CN1099081C (zh) * 1994-01-29 2003-01-15 世嘉企业股份有限公司 信息处理装置
GB2287333B (en) * 1994-03-11 1998-02-11 Advanced Risc Mach Ltd Data processing multiplier
US5557734A (en) * 1994-06-17 1996-09-17 Applied Intelligent Systems, Inc. Cache burst architecture for parallel processing, such as for image processing
JP3579087B2 (ja) * 1994-07-08 2004-10-20 株式会社日立製作所 演算器およびマイクロプロセッサ
CN103455304B (zh) * 1995-08-31 2016-04-27 英特尔公司 用于处理指令集的处理器

Cited By (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002544587A (ja) * 1999-05-12 2002-12-24 アナログ デバイセス インコーポレーテッド デジタル信号プロセッサ計算コア
US7185176B2 (en) 2002-06-03 2007-02-27 Matsushita Electric Industrial Co., Ltd, Processor executing SIMD instructions
JP2009037599A (ja) * 2002-08-09 2009-02-19 Marvell World Trade Ltd アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム
US8131981B2 (en) 2002-08-09 2012-03-06 Marvell International Ltd. SIMD processor performing fractional multiply operation with saturation history data processing to generate condition code flags
JP2016194929A (ja) * 2006-05-10 2016-11-17 クゥアルコム・インコーポレイテッドQualcomm Incorporated マイクロプロセッサ内において複数のレジスタユニットからの対応する半語ユニットを結合するための方法及びシステム
JP2018156672A (ja) * 2006-05-10 2018-10-04 クゥアルコム・インコーポレイテッドQualcomm Incorporated マイクロプロセッサ内において複数のレジスタユニットからの対応する半語ユニットを結合するための方法及びシステム
US10572251B2 (en) 2006-09-21 2020-02-25 Intel Corporation Method and apparatus for performing logical compare operations
US10416997B2 (en) 2006-09-21 2019-09-17 Intel Corporation Method and apparatus for performing logical compare operations
US10146536B2 (en) 2006-09-21 2018-12-04 Intel Corporation Method and apparatus for performing logical compare operations
JP2017079083A (ja) * 2006-09-21 2017-04-27 インテル コーポレイション 論理比較動作を実行するための装置
JP2015007993A (ja) * 2006-09-21 2015-01-15 インテル コーポレイション 論理比較動作を実行するための装置
US9645821B2 (en) 2006-09-22 2017-05-09 Intel Corporation Instruction and logic for processing text strings
US10261795B2 (en) 2006-09-22 2019-04-16 Intel Corporation Instruction and logic for processing text strings
US11537398B2 (en) 2006-09-22 2022-12-27 Intel Corporation Instruction and logic for processing text strings
JP2022050519A (ja) * 2006-09-22 2022-03-30 インテル コーポレイション プロセッサ、システム及び方法
US11029955B2 (en) 2006-09-22 2021-06-08 Intel Corporation Instruction and logic for processing text strings
US11023236B2 (en) 2006-09-22 2021-06-01 Intel Corporation Instruction and logic for processing text strings
US9448802B2 (en) 2006-09-22 2016-09-20 Intel Corporation Instruction and logic for processing text strings
US10929131B2 (en) 2006-09-22 2021-02-23 Intel Corporation Instruction and logic for processing text strings
JP2010504594A (ja) * 2006-09-22 2010-02-12 インテル コーポレイション 文字列を処理するための命令及び論理回路
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US9495160B2 (en) 2006-09-22 2016-11-15 Intel Corporation Instruction and logic for processing text strings
US9063720B2 (en) 2006-09-22 2015-06-23 Intel Corporation Instruction and logic for processing text strings
JP2014063535A (ja) * 2006-09-22 2014-04-10 Intel Corp 文字列を処理するための命令及び論理回路
US9632784B2 (en) 2006-09-22 2017-04-25 Intel Corporation Instruction and logic for processing text strings
US9804848B2 (en) 2006-09-22 2017-10-31 Intel Corporation Instruction and logic for processing text strings
US9772846B2 (en) 2006-09-22 2017-09-26 Intel Corporation Instruction and logic for processing text strings
US9772847B2 (en) 2006-09-22 2017-09-26 Intel Corporation Instruction and logic for processing text strings
US9703564B2 (en) 2006-09-22 2017-07-11 Intel Corporation Instruction and logic for processing text strings
US9720692B2 (en) 2006-09-22 2017-08-01 Intel Corporation Instruction and logic for processing text strings
US9740489B2 (en) 2006-09-22 2017-08-22 Intel Corporation Instruction and logic for processing text strings
US9740490B2 (en) 2006-09-22 2017-08-22 Intel Corporation Instruction and logic for processing text strings
US10684855B2 (en) 2009-12-17 2020-06-16 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
JP2017152016A (ja) * 2009-12-17 2017-08-31 インテル・コーポレーション 単一命令でシフト・アンド・排他的論理和演算を行うシステム
JP2012530978A (ja) * 2009-12-17 2012-12-06 インテル・コーポレーション 単一命令でシフトおよび排他的論理和演算を行う方法および装置
US9495166B2 (en) 2009-12-17 2016-11-15 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
JP2014194825A (ja) * 2009-12-17 2014-10-09 Intel Corp 単一命令でシフトおよび排他的論理和演算を行う方法および装置
JP2014160500A (ja) * 2009-12-17 2014-09-04 Intel Corp 単一命令でシフトおよび排他的論理和演算を行う方法および装置
US9501281B2 (en) 2009-12-17 2016-11-22 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US9495165B2 (en) 2009-12-17 2016-11-15 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US9747105B2 (en) 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
JP2015164061A (ja) * 2009-12-17 2015-09-10 インテル・コーポレーション 単一命令でシフト・アンド・排他的論理和演算を行う方法および装置
JP5853177B2 (ja) * 2011-04-08 2016-02-09 パナソニックIpマネジメント株式会社 データ処理装置、及びデータ処理方法
JP2017107587A (ja) * 2012-09-28 2017-06-15 インテル・コーポレーション 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
JP2015534189A (ja) * 2012-09-28 2015-11-26 インテル・コーポレーション 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
JP2014179076A (ja) * 2013-03-14 2014-09-25 Intel Corp 複数データ要素対複数データ要素比較プロセッサ、方法、システム、および命令
US10223120B2 (en) 2013-08-06 2019-03-05 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
US10678546B2 (en) 2013-08-06 2020-06-09 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
JP2019050039A (ja) * 2013-08-06 2019-03-28 インテル・コーポレーション ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
JP2016529617A (ja) * 2013-08-06 2016-09-23 インテル・コーポレーション ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
JP2016527650A (ja) * 2013-08-06 2016-09-08 インテル・コーポレーション ベクトルポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
JP2017539013A (ja) * 2014-12-23 2017-12-28 インテル・コーポレーション 競合検出を実行するための方法および装置
WO2020039522A1 (ja) * 2018-08-22 2020-02-27 日本電気株式会社 情報処理装置、情報処理方法及びプログラム
JPWO2020039522A1 (ja) * 2018-08-22 2021-08-10 日本電気株式会社 情報処理装置、情報処理方法及びプログラム

Also Published As

Publication number Publication date
CN103064650A (zh) 2013-04-24
CN1534458B (zh) 2010-05-26
CN1225688C (zh) 2005-11-02
JP3711147B2 (ja) 2005-10-26
EP1693742A3 (en) 2010-01-06
WO1997008608A1 (en) 1997-03-06
CN103064653A (zh) 2013-04-24
CN102707922B (zh) 2015-10-07
KR19990044304A (ko) 1999-06-25
BR9612911B1 (pt) 2010-12-14
CN103092562A (zh) 2013-05-08
CN1149469C (zh) 2004-05-12
CN102707922A (zh) 2012-10-03
CN103064649B (zh) 2016-03-02
CN101794213A (zh) 2010-08-04
CN103064651A (zh) 2013-04-24
CN1200822A (zh) 1998-12-02
CN102073475A (zh) 2011-05-25
CN103064652B (zh) 2016-07-20
EP0847551B1 (en) 2012-12-05
CN103092564A (zh) 2013-05-08
CN103092564B (zh) 2016-04-06
CN1534453A (zh) 2004-10-06
CN102073475B (zh) 2015-05-13
TW310406B (ja) 1997-07-11
CN1534458A (zh) 2004-10-06
HK1144974A1 (en) 2011-03-18
EP0847551A1 (en) 1998-06-17
CN1264085C (zh) 2006-07-12
CN1515994A (zh) 2004-07-28
CN101794213B (zh) 2014-09-17
BR9610095A (pt) 1999-02-17
AU6677896A (en) 1997-03-19
CN1431580A (zh) 2003-07-23
CN1892589A (zh) 2007-01-10
CN103092562B (zh) 2016-05-18
EP0847551A4 (en) 2001-11-21
CN101930352B (zh) 2016-05-18
CN103064649A (zh) 2013-04-24
CN101930352A (zh) 2010-12-29
CN103064650B (zh) 2016-02-24
CN103092563A (zh) 2013-05-08
CN103064652A (zh) 2013-04-24
CN103064651B (zh) 2016-01-27
CN1892589B (zh) 2011-02-23
HK1099095A1 (en) 2007-08-03
CN103383639A (zh) 2013-11-06
CN101794212A (zh) 2010-08-04
EP1693742A2 (en) 2006-08-23
CN1523492A (zh) 2004-08-25
CN103345380A (zh) 2013-10-09
CN103455304A (zh) 2013-12-18
CN1252587C (zh) 2006-04-19
CN103092563B (zh) 2016-05-18
CN103345380B (zh) 2016-05-18
CN103383639B (zh) 2016-05-18
CN100380312C (zh) 2008-04-09
CN101794212B (zh) 2015-01-07
CN103064653B (zh) 2016-05-18
CN103455304B (zh) 2016-04-27

Similar Documents

Publication Publication Date Title
JPH11511575A (ja) パック・データを処理する1組の命令
US5859997A (en) Method for performing multiply-substrate operations on packed data
US6035316A (en) Apparatus for performing multiply-add operations on packed data
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050228

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050411

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050530

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050812

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100819

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110819

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110819

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120819

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130819

Year of fee payment: 8

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