JPH11500547A - 乗算を有するマイクロプロセッサ - Google Patents

乗算を有するマイクロプロセッサ

Info

Publication number
JPH11500547A
JPH11500547A JP8519114A JP51911496A JPH11500547A JP H11500547 A JPH11500547 A JP H11500547A JP 8519114 A JP8519114 A JP 8519114A JP 51911496 A JP51911496 A JP 51911496A JP H11500547 A JPH11500547 A JP H11500547A
Authority
JP
Japan
Prior art keywords
data
packed
register
multiplication
bits
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.)
Pending
Application number
JP8519114A
Other languages
English (en)
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 JPH11500547A publication Critical patent/JPH11500547A/ja
Pending 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • 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/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)

Abstract

(57)【要約】 プロセッサ(109)が、制御信号(207)を受け取るように結合されたデコーダ(202)を備える。制御信号は、第1のソース・アドレスと第2のソース・アドレスと宛先アドレスと命令フィールドとを有する。第1のソース・アドレスは第1の場所に対応する。第2のソース・アドレスは第2の場所に対応する。宛先アドレスは第3の場所に対応する。命令フィールドは、あるタイプのパックされたデータ乗算を行うことを示す。プロセッサは、デコーダに結合された回路(203)をさらに備える。この回路は、第1の場所に格納されている第1のパックされたデータに第2の場所に格納されている第2のパックされたデータを乗じる回路である。この回路はさらに、対応する結果パックされたデータを第3の場所に伝達する。

Description

【発明の詳細な説明】 乗算を有するマイクロプロセッサ 発明の背景 発明の分野 本発明は、単一の制御信号を使用して算術演算を行い、複数のデータ要素を操 作する装置および方法に関する。本発明は、パックされたされたデータ・タイプ に対する乗算の実行を可能にする。 2.関連技術の説明 現在、ほとんどのパーソナル・コンピュータ・システムは1つの命令によって 演算を行って1つの結果を出す。命令の実行速度を増し、複雑命令セット・コン ピュータ(CISC)と呼ばれるプロセッサ命令の複雑さを増すことによって、 パフォーマンスの向上が実現される。米国カリフォルニア州サンタクララのイン テル・コーポレイションが販売するIntel80286TMマイクロプロセッサ のようなプロセッサがCISCプロセッサの範疇に入る。 以前のコンピュータ・システム・アーキテクチャは、CISCの概念を利用す るように最適化されていた。そのようなシステムは一般に、32ビット幅のデー タ・バスを持つ。しかし、コンピュータ・サポーテッド・コオペレーション(C SC:電子会議と混在メディア・データ操作を統合したもの)、二次元/三次元 グラフィックス、画像処理、ビデオ圧縮/圧縮解除、認識アルゴリズム、および 音声操作を対象にしたアプリケーションによって、パフォーマンス向上の必要が 増す。しかし、命令の実行速度と複雑さを増すことが唯一の解決策である。 これらのアプリケーションの1つの一般的な点は、数ビットだけが重要な、大 量のデータを操作することが多いことである。すなわち、意味のあるビットがデ ータ・バスのサイズよりもはるかに少ないビット数で表されるデータである。た とえば、プロセッサは8ビットおよび16ビットのデータ(たとえばビデオ画像 における画素の色成分)に対して多くの演算を実行するが、それよりかなり広い データ・バスとレジスタを有する。したがって、32ビットのデータ・バスとレ ジスタを有し、これらのアルゴリズムの1つを実行するプロセッサは、データの 先頭8ビットだけが重要であるため、そのデータの処理、伝送、および記憶容量 の最大75パーセントが無駄になることがある。 したがって、操作するデータを表すのに必要なビット数とプロセッサの実際の データ伝送および記憶容量との差をより効率的に使用することによってパフォー マンスを向上させるプロセッサが望ましい。 発明の概要 改良されたデータ比較操作を有するマイクロプロセッサ(またはプロセッサ) について説明する。 このプロセッサは、制御信号を受信するように結合されたデコーダを備える。 制御信号は、第1のソース・アドレスと、第2のソース・アドレスと、宛先アド レスと、命令フィールドとを有する。第1のソース・アドレスは第1の場所に対 応する。第2のソース・アドレスは第2の場所に対応する。宛先アドレスは第3 の場所に対応する。命令フィールドは、あるタイプのパックされたデータ乗算を 行うことを示す。プロセッサはさらに、デコーダに結合された回路を備える。こ の回路は、第1の場所に記憶された第1のパックされたデータに第2の場所に記 憶された第2のパックされたデータを乗じる回路である。この回路はさらに、対 応する結果パックされたデータを第3の場所に伝達する。 本説明および図には多くの詳細が含まれるが、本発明は請求の範囲によって定 義される。本発明には、それらの請求の範囲に記載されている限定だけが適用さ れる。 図面の簡単な説明 本発明を、図面に限定的なものではなく例として図示する。同様の参照符号は 同様の要素を示す。 第1図は、本発明の方法および装置を使用するコンピュータ・システムの実施 形態を示す図である。 第2図は、本発明のプロセッサの実施形態を示す図である。 第3図は、プロセッサがレジスタ・ファイル内のデータを操作するために使用 する一般的なステップを示す流れ図である。 第4a図は、記憶データ・タイプを示す図である。 第4b図、第4c図、および第4d図は、レジスタ内整数データ表現を示す図 である。 第5a図は、パックされたデータ・タイプを示す図である。 第5b図、第5c図、および第5d図は、レジスタ内パックされたデータ表現 を示す図である。 第6a図は、パックされたデータの使用法を示す、コンピュータ・システムで 使用される制御信号形式の図である。 第6b図は、パックされたデータの使用法を示す、コンピュータ・システムで 使用可能な第2の制御信号形式の図である。 第7図は、パックされたデータに対して乗算を行うときにプロセッサが従う方 法の一実施形態を示す図である。 第8図は、パックされたデータの個々のデータ要素を処理することができる回 路を示す図である。 好ましい実施形態の説明 本発明の一実施形態の概要 複数のデータ要素に対して作用する乗算を有するプロセッサについて説明する 。以下の説明では、本発明を十分に理解することができるように、回路などの多 くの特定の詳細を記載する。他の場合には、本発明が無用に不明瞭にならないよ うに、周知の構造および技法については詳細に示さない。 定義 本発明の実施形態の説明を理解する基礎となるように、以下のように定義を示 す。 ビットXないしビットY:二進数のサブフィールドを規定する。たとえば、( 基数で示した)バイト001110102のビット6ないしビット0は、111 0102のサブフィールドを表す。二進数の後の「2」は基数2を示す。したが って、10002は810に等しく、F16は1510に等しい。 Rx:レジスタである。レジスタは、データの記憶と供給を行うことができる 任意の素子である。レジスタの他の機能については後述する。レジスタはプロセ ッサのパッケージの一部であるとは限らない。 DEST:データ・アドレスである。 SRC1:データ・アドレスである。 SRC2:データ・アドレスである。 結果:DESTによってアドレス指定されたレジスタに格納されるデータであ る。 ソース1:SRC1によってアドレス指定されたレジスタに格納されているデ ータである。 ソース2:SRC2によってアドレス指定されたレジスタに格納されているデ ータである。 コンピュータ・システム 第1図を参照すると、本発明の実施形態を実施することができるコンピュータ ・システムが、コンピュータ・システム100として図示されている。コンピュ ータ・システム100は、情報を伝送するバス101またはその他の通信ハード ウェアおよびソフトウェアと、バス101に結合された情報を処理するプロセッ サ109とを備える。コンピュータ・システム100はさらに、バス101に結 合され、プロセッサ109によって実行される情報と命令を記憶するランダム・ アクセス・メモリ(RAM)またはその他のダイナミック記憶装置(メイン・メ モリ104と呼ぶ)を備える。メイン・メモリ104は、プロセッサ109によ る命令の実行中に変数またはその他の中間情報を一時的に記憶するためにも使用 することができる。コンピュータ・システム100は、バス101に結合され、 プロセッサ109のための静的情報および命令を記憶する読取り専用メモリ(R OM)106またはその他のスタティック記憶装置あるいはその両方も備える。 バス101には情報と命令を記憶するデータ記憶装置107が結合されている。 さらに、コンピュータ・システム100には磁気ディスクや光ディスクなどの データ記憶装置107とそれに対応するディスク・ドライブを結合することがで きる。コンピュータ・システム100は、コンピュータ・ユーザに情報を表示す るためにバス101を介して表示装置121にも結合することができる。表示装 置121は、フレーム・バッファ、専用グラフィックス・レンダリング装置、陰 極線管(CRT)、フラット・パネル・ディスプレイを含むことができる。プロ セッサ109に情報とコマンド選択を伝えるために、英数字およびその他のキー を備える英数字入力装置122が、典型的にはバス101に結合されている。他 のタイプのユーザ入力装置は、プロセッサ109に指示情報とコマンド選択を伝 え、表示装置121上のカーソル移動を制御する、マウス、トラックボール、ペ ン、タッチ画面、カーソル指示キーなどのカーソル制御装置123である。この 入力装置は一般に、第1の軸(たとえばx)と第2の軸(たとえばy)の2つの 軸に2つの自由度を持ち、それによってこの装置は平面内の位置を指定すること ができる。しかし、本発明は、2つの自由度しかもたない入力装置には限定され ない。 バス101に結合することができる他の装置は、命令、データ、またはその他 の情報を、紙、フィルム、または同様のタイプの媒体などの媒体に印刷するため に使用することができるハード・コピー装置124である。さらに、コンピュー タ・システム100は、情報を記録するためにマイクロホンに結合されたオーデ ィオ・ディジタイザなど、録音または再生あるいはその両方のための装置125 に結合することができる。さらに、この装置は、ディジタル化された音声を再生 するためにディジタル−アナログ(D/A)変換器に結合されたスピーカも含む ことができる。 また、コンピュータ・システム100は、コンピュータ・ネットワーク(たと えばLAN)内の端末とすることもできる。その場合、コンピュータ・システム 100は、いくつかのネットワーク化された装置を含むコンピュータ・システム のコンピュータ・サブシステムとなる。コンピュータ・システム100は、任意 選択としてビデオ・ディジタイジング装置126を備える。ビデオ・ディジタイ ジング装置126を使用して、ビデオ画像を捕らえ、それをコンピュータ・ネッ トワーク上の他の装置に送信することができる。 コンピュータ・システム100は、コンピュータ・サポーテッド・コオペレー ション(CSC:電子会議と混在媒体データ操作とが統合されたもの)、二次元 /三次元グラフィックス、画像処理、ビデオ圧縮/圧縮解除、認識アルゴリズム 、および音声操作に対応するのに有用である。 プロセッサ 第2図にプロセッサ109の詳細図を示す。プロセッサ109は、BiCMO S、CMOS、NMOSなどのいくつかの処理技法のいずれかを使用して、1つ または複数の基板上に実装することができる。 プロセッサ109は、使用する制御信号とデータをデコードするデコーダ20 2を備える。その場合、データは内部バス205を介してレジスタ・ファイル2 04に格納することができる。明確に言えば、実施形態のレジスタは特定のタイ プの回路にのみに限定されることを意味しない。実施形態のレジスタは、データ の記憶および供給と、本明細書に記載の機能を実行することができればよい。 データは、データのタイプに応じて、整数レジスタ201、レジスタ209、 状態レジスタ208、または命令ポインタ・レジスタ211に格納することがで きる。たとえば浮動小数点レジスタなど他のレジスタをレジスタ・ファイル20 4に含めることができる。一実施形態では、整数レジスタ201には、32ビッ トの整数データが格納される。一実施形態では、レジスタ209にはR0212 a〜R7212hの8個のレジスタが含まれる。レジスタ209内の各レジスタ 長は64ビットである。R1212a、R2212b、およびR3212cがレジ スタ209内の個々のレジスタの例である。レジスタ209内の32ビットの レジスタを、整数レジスタ201内の整数レジスタに移動させることができる。 同様に、整数レジスタ内の値をレジスタ209内の32ビットのレジスタに移動 させることができる。 状態レジスタ208は、プロセッサ109の状態を示す。命令ポインタ・レジ スタ211には、次に実行される命令のアドレスが格納される。整数レジスタ2 01,レジスタ209、状態レジスタ208、および命令ポインタ・レジスタ2 11はすべて内部バス205に接続されている。内部バス205には任意の追加 のレジスタが接続される。 他の実施形態では、これらのレジスタのうちのいくつかは2つの異なるタイプ のデータに使用することができる。たとえば、レジスタ209と整数レジスタ2 01を組み合わせて、各レジスタに整数データまたはパックされたデータを格納 することができる。他の実施形態では、レジスタ209を浮動小数点レジスタと して使用することができる。この実施形態では、パックされたデータはレジスタ 209または浮動小数点データに格納することができる。一実施形態では、組み 合わされたレジスタの長さは64ビットで、整数は64ビットで表される。この 実施形態では、パックされたデータと整数データを格納する際に、レジスタはそ の2つのデータ・タイプを区別する必要がない。 機能ユニット203は、プロセッサ109が行う演算を実行する。このような 演算には、シフト、加算、減算、乗算などが含まれる。機能ユニット203は内 部バス205に接続している。キャッシュ206は、プロセッサ109の任意選 択要素であり、たとえばメイン・メモリ104からのデータまたは制御信号ある いはその両方をキャッシュするために使用される。キャッシュ206は、デコー ダ202に接続され、制御信号207を受信するように接続されている。 第3図に、プロセッサ109の動作概要を示す。すなわち、第3図にはプロセ ッサ109がパックされたデータに対する演算、パックされていないデータに対 する演算、または他の何らかの操作を実行する間にたどるステップが示されてい る。たとえば、このような操作にはレジスタ・ファイル204内のレジスタに、 キャッシュ206、メイン・メモリ104、読取り専用メモリ(ROM)106 、またはデータ記憶装置107からデータをロードするロード操作が含まれる。 本 発明の一実施形態では、プロセッサ109は、米国カリフォルニア州サンタクラ ラのインテル・コーポレイションが販売するIntel80486TMによってサ ポートされる命令のほとんどをサポートする。本発明の他の実施形態では、プロ セッサ109は米国カリフォルニア州サンタクララのインテル・コーポレイショ ンが販売するIntel80486TMによってサポートされるすべての演算をサ ポートする。本発明の他の実施形態では、プロセッサ109は、すべて米国カリ フォルニア州サンタクララのインテル・コーポレイションが販売するPenti umTMプロセッサ、Intel80486TMプロセッサ、80386TMプロセッ サ、Intel80286TMプロセッサ、およびIntel8086TMプロセッ サによってサポートされるすべての演算をサポートする。本発明の他の実施形態 では、プロセッサ109は、米国カリフォルニア州サンタクララのインテル・コ ーポレイションが定義するIATM(インテル・アーキテクチャ)でサポートされ るすべての演算をサポートする(米国カリフォルニア州サンタクララのインテル から入手可能な「Microprocessors,Intel Data B ooks volumelおよびvolume2、1992年および1993年 刊」を参照)。一般に、プロセッサ109はPentiumTMプロセッサの現行 命令セットをサポートすることができるが、将来の命令と本明細書に記載の命令 を組み込むように修正することもできる。重要なのは、汎用プロセッサ109が 、本明細書に記載の演算に加えて、従来使用されていた演算をサポートすること ができることである。 ステップ301で、デコーダ202がキャッシュ206またはバス101から 制御信号207を受け取る。デコーダ202は、制御信号をデコードして、実行 すべき演算を判断する。 ステップ302で、デコーダ202はレジスタ・ファイル204またはメモリ 内の記憶場所にアクセスする。制御信号207で指定されたレジスタ・アドレス に応じて、レジスタ・ファイル204内のレジスタかメモリ内の記憶場所のどち らかにアクセスする。たとえば、パックされたデータに対する演算の場合、制御 信号207にはSRC1、SRC2、およびDESTレジスタ・アドレスを含め ることができる。SRC1は第1のソース・レジスタのアドレスである。SRC 2は第2のソース・レジスタのアドレスである。すべての演算が2つのソース・ アドレスを必要とするわけではないので、場合によってはSRC2アドレスは任 意選択である。SRC2アドレスが操作にとって不要な場合、SRC1アドレス のみが使用される。DESTは、結果データが記憶される宛先レジスタのアドレ スである。一実施形態では、SRC1またはSRC2はDESTとしても使用さ れる。SRC1、SRC2、およびDESTについては第6a図および第6b図 を参照しながら詳述する。対応するレジスタに格納されているデータをそれぞれ Source1、Source2、およびResultと呼ぶ。これらの各デー タの長さは64ビットである。 本発明の他の実施形態では、SRC1、SRC2、およびDESTのいずれか 1つまたは全部は、プロセッサ109のアドレス可能記憶空間内の記憶場所を規 制することができる。たとえば、SRC1はメイン・メモリ104内の記憶場所 を識別し、SRC2は整数レジスタ201内の第1のレジスタを識別し、DES Tはレジスタ209内の第2のレジスタを識別する。本明細書では説明を簡単に するために、レジスタ・ファイル204へのアクセスについて言及するが、これ らのアクセスはレジスタ・ファイル204の代わりにメモリに対して行うことも できる。 本発明の他の実施形態では、命令コードはSRC1とSRC2の2つのアドレ スしか含まない。この実施形態では、演算の結果はSRC1レジスタまたはSR C2レジスタに格納される。すなわち、SRC1(またはSRC2)をDEST として使用する。このタイプのアドレス指定は、2つのアドレスしか持たない以 前のCISC命令に対応する。これによって、デコーダ202における複雑さが 減少する。この実施形態では、SRC1レジスタに含まれるデータを破壊しては ならない場合、演算を実行する前にそのデータをまず別のレジスタにコピーしな ければならないことに留意されたい。コピーには追加の命令が必要になる。本明 細書では説明を簡単にするために、3アドレスのアドレス指定方式について説明 する(すなわちSRC1、SRC2、およびDEST)。しかし、一実施形態で は制御信号にSRC1とSRC2しか含めることができず、SRC1(またはS RC2)によって宛先レジスタを識別することを想起されたい。 制御信号が演算を必要とする場合、ステップ303で、機能ユニット203が レジスタ・ファイル204内のアクセス・データに対してその演算を実行するよ うに使用可能にされる。機能ユニット203で演算が実行されると、ステップ3 04でその結果が制御信号207の要件に従ってレジスタ・ファイル204に戻 されて格納される。 データ形式および記憶形式 第4a図に、第1図のコンピュータ・システムで使用可能なデータ形式をいく つか示す。これらのデータ形式は固定小数点である。プロセッサ109はこれら のデータ形式を操作することができる。マルチメディア・アルゴリズムはこれら のデータ形式を使用することが多い。バイト401は8ビットの情報を含む。ワ ード402は16ビットの情報、すなわち2バイトを含む。ダブルワード403 は32ビットの情報、すなわち4バイトを含む。したがって、プロセッサ109 はこれらの記憶データ形式のうちの任意の1つに対して操作を行うことができる 制御信号を実行する。 以下の説明では、ビット、バイト、ワード、およびダブルワード・サブフィー ルドについて言及する。たとえば、(基数2で示す)バイト001110102 のビット6ないしビット0はサブフィールド1110102を表す。 第4b図ないし第4d図に、本発明の一実施形態で使用するレジスタ内表現を 示す。たとえば、無符号バイトのレジスタ内表現410によって、整数レジスタ 201内のレジスタに格納されているデータを表すことができる。一実施形態で は、整数レジスタ201内のレジスタ長は64ビットである。他の実施形態では 、整数レジスタ201内のレジスタ長は32ビットである。説明を簡単にするた めに、以下の説明では64ビットの整数レジスタについて説明するが、32ビッ トの整数レジスタを使用することもできる。 無符号バイトのレジスタ内表現410は、プロセッサ109が整数レジスタ2 01にバイト401を格納し、そのレジスタ内のビット7ないしビット0の先頭 8ビットがそのデータ・バイト401専用であることを示している。これらのビ ットを{b}と示す。このバイトを正しく表すには、残りの56ビットがゼロで なければならない。符号付きバイトのレジスタ内表現411の場合、整数レジス タ201にはデータはビット6ないしビット0の先頭7ビットにデータとして格 納される。7番目のビットは符号ビットを表し、{s}で示す。残りのビット6 3ないしビット8はそのバイトの符号の継続である。 無符号ワードのレジスタ内表現412は、整数レジスタ201のうちの1つの レジスタに格納される。ビット15ないしビット0には、無符号ワード402が 入れられる。これらのビットを{w}で示す。このワードを正しく表すには、残 りのビット63ないしビット16はゼロでなければならない。符号付きワード4 02は、符号付きワードのレジスタ内表現413が示すように、ビット14ない しビット0に格納される。残りのビット63ないしビット15は符号フィールド である。 ダブルワード403は、無符号ダブルワードのレジスタ内表現414または符 号付きダブルワードのレジスタ内表現415として格納することができる。無符 号ダブルワードのレジスタ内表現414のビット31ないしビット0はデータで ある。これらのビットを{d}で示す。この無符号ダブルワードを正しく表すに は、残りのビット63ないしビット32はゼロでなければならない。整数レジス タ201は、符号付きダブルワードのレジスタ内表現415を、そのビット30 ないしビット0を格納する。残りのビット63ないしビット31は符号フィール ドである。 前述の第4b図ないし第4d図に示すように、データ・タイプによっては64 ビット幅のレジスタに格納するのは非効率的な格納方法である。たとえば、無符 号バイトのレジスタ内表現410を格納する場合、ビット63ないしビット8は ゼロでなければならず、ビット7ないしビット0にしか非ゼロビットを入れるこ とができない。したがって、64ビット・レジスタに1バイトを格納するプロセ ッサは、レジスタの容量の12.5%しか使用しない。同様に、機能ユニット2 03によって実行される演算は先頭の数ビットしか重要ではない。 第5a図に、パックされたデータのデータ形式を示す。パックされたバイト5 01、パックされたワード502、パックされたダブルワード503の3つのパ ックされたデータ形式が図示されている。パックされたバイトは、本発明の一実 施形態では64ビット長であり、8個のデータ要素を含む。各データ要素は1バ イト長である。一般に、データ要素は1つのレジスタ(または記憶場所)に同じ 長さの他のデータ要素と共に格納される個々のデータである。本発明の一実施形 態では、1つのレジスタに格納されるデータ要素の数は、64ビットをデータ要 素のビット長で割った商である。 パックされたワード502は64ビット長であり、4個のワード402データ 要素を含む。各ワード402データ要素は、16ビットの情報を含む。 パックされたダブルワード503は64ビット長であり、2個のダブルワード 403データ要素を含む。各ダブルワード403データ要素は32ビットの情報 を含む。 第5b図ないし第5d図にレジスタ内パックされたデータ記憶表現を示す。無 符号のパックされたバイトのレジスタ内表現510は、レジスタR0212a〜 Rn212afのうちの1つにパックされたバイト501が格納されている様子 を示している。各バイト・データ要素の情報は、バイト0はビット7ないしビッ ト0に格納され、バイト1はビット15ないしビット8、バイト2はビット23 ないしビット16、バイト3はビット31ないしビット24,バイト4はビット 39ないしビット32、バイト5はビット47ないしビット40、バイト6はビ ット55ないしビット48、バイト7はビット63ないしビット56に格納され る。したがって、レジスタ内ですべての使用可能ビットが使用される。この記憶 構成によって、プロセッサの記憶効率が向上する。また、8個のデータ要素にア クセスして、1つの操作を8個のデータ要素に同時に実行することができるよう になる。符号付きパックされたバイトのレジスタ内表現511も同様にレジスタ 209内のレジスタに格納される。どのバイト・データ要素でも8番目のビット のみが必要な符号ビットであり、他のビットは使用してもしなくても符号が示さ れることに留意されたい。 無符号パックされたワードのレジスタ内表現512は、ワード3ないしワード 0がレジスタ209のうちの1つのレジスタに格納される様子を示している。ビ ット15ないしビット0にはワード0のデータ要素情報が入り、ビット31ない しビット16にはデータ要素ワード1の情報が入り、ビット47ないしビット3 2にはデータ要素ワード2の情報が入り、ビット63ないしビット48にはデー タ要素ワード3の情報が入る。符号付きパックされたワードのレジスタ内表現5 13は無符号パックされたワードのレジスタ内表現512と同様である。各ワー ド・データ要素の16番目のビットにのみ、必要な符号標識が入ることに留意さ れたい。 無符号パックされたダブルワードのレジスタ内表現514は、レジスタ209 に2個のダブルワード・データ要素が格納される様子を示している。ダブルワー ド0はレジスタのビット31ないしビット0に格納される。ダブルワード1はレ ジスタのビット63ないしビット32に格納される。符号付きパックされたダブ ルワードのレジスタ内表現515は無符号パックされたダブルワードのレジスタ 内表現514と同様である。必要な符号ビットはダブルワード・データ要素の3 2番目のビットであることに留意されたい。 前述のように、レジスタ209はパックされたデータと整数データの両方に使 用することができる。本発明のこの実施形態では、アドレス指定されたレジスタ 、たとえばR1212aにパックされたデータと単純整数/固定小数点データの どちらが格納されているかを追跡するために、個々のプログラミング・プロセッ サ109が必要である。他の実施形態では、プロセッサ109はレジスタ209 の個々のレジスタに格納されているデータのタイプを追跡することができる。こ の代替実施形態では、たとえば単純/固定小数点整数データに対してパックされ た加算を行おうとした場合、エラーを生成することがある。 制御信号の形式 以下に、プロセッサ109がパックされたデータを操作するために使用する制 御信号形式の一実施形態について説明する。本発明の一実施形態では、制御信号 は32ビットで表される。デコーダ202はバス101から制御信号207を受 け取ることができる。他の実施形態では、デコーダ202はキャッシュ206か らもそのような制御信号を受け取ることができる。 第6a図にパックされたデータを操作する制御信号の一般的な形式を示す。命 令フィールドOP601(ビット31ないしビット26)は、たとえば、パック された加算、パックされた減算など、プロセッサ109によって実行される演算 に関する情報を供給する。SRC1 602(ビット25ないしビット20)は 、レジスタ209内のレジスタのソース・レジスタ・アドレスを供給する。この ソース・レジスタは、制御信号の実行で使用される第1のパックされたデータS ource1を保持する。同様に、SRC2 603(ビット19ないしビット 14)には、レジスタ209内のレジスタのアドレスが入れられる。この第2の ソース・レジスタは、演算の実行時に使用されるパックされたデータSourc e2を保持する。DEST605(ビット5ないしビット0)にはレジスタ20 9内のレジスタのアドレスが入れられる。この宛先レジスタには、パックされた データ演算の結果のパックされたデータResultが格納される。 制御ビットSZ610(ビット12およびビット13)は、第1および第2の パックされたデータ・ソース・レジスタ内のデータ要素の長さを示す。SZ61 0が012に等しい場合、パックされたデータはパックされたバイト501とし てフォーマットされる。SZ610が102に等しい場合、パックされたデータ はパックされたワード502としてフォーマットされる。しかし、002または 112と等しいSZ610を受け取った場合、他の実施形態では、これらの値の うちの1つを使用してパックされたダブルワード503を示すことができる。 制御ビットT611(ビット11)は、演算を飽和モードで行うかどうかを示 す。T611が1の場合、飽和演算が行われる。T611がゼロの場合、非飽和 演算が行われる。飽和演算については後述する。 制御ビットS612(ビット10)は、符号付き演算の使用を示す。S612 が1の場合、符号付き演算が行われる。S612がゼロの場合、無符号演算が行 われる。 第6b図に、パックされたデータを操作する制御信号の第2の一般的形式を示 す。この形式は、米国イリノイ州マウント・プロスペクトP.O.Box764 1インテル・コーポレイションのLiterature Salesから入手可 能な”PentiumTM Processor Family User’s Manual”に記載されている汎用整数命令コード形式に対応する。OP60 1、SZ610、T611、およびS612がすべて組み合わされて1つの大き なフィールドになることに留意されたい。制御信号によっては、ビット3ないし 5がSRC1 602となる。一実施形態では、SRC1 602アドレスがあ る場合、ビット3ないし5はDEST605にも対応する。SRC2 603ア ドレスがある代替実施形態では、ビット0ないし2もDEST605にも対応す る。パックされたシフト即値演算のような他の制御信号の場合、ビット3ないし 5は命令コード・フィールドの拡張部を表す。一実施形態では、この拡張部によ ってプログラマはシフト・カウント値などの即値を制御信号と共に組み込むこと ができる。一実施形態では、即値は制御信号の後に続く。これについては”Pe ntiumTM Processor Family User's Manua l”の付録F−1〜F−3ページに詳述されている。ビット0ないし2はSRC 2 603を表す。この汎用形式によって、レジスタからレジスタ、メモリから レジスタ、メモリによるレジスタ、レジスタによるレジスタ、即値によるレジス タ、レジスタからメモリのアドレス指定を行うことができる。また、一実施形態 では、この汎用形式は整数レジスタからレジスタと、レジスタから整数レジスタ へのアドレス指定もサポートする。 飽和/非飽和の説明 前述のように、T611は演算が任意選択で飽和するかどうかを示す。飽和を 可能にした演算の結果がデータの範囲からオーバーフローまたはアンダーフロー する場合、その結果はクランプされる。クランプとは、結果がその範囲の最大値 または最小値を超える場合、その結果を最大値または最小値に設定することを意 味する。アンダーフローの場合、飽和によって結果がその範囲内の最低値にクラ ンプされ、オーバーフローの場合は最高値にクランプされる。各データ形式の許 容範囲を表1に示す。 前述のように、T611は飽和演算を行うかどうかを示す。したがって、無符 号バイト・データ形式を使用し、演算結果=258で、飽和を使用可能にしてい た場合、結果は演算の宛先レジスタに格納される前に255にクランプされるこ とになる。同様に、演算結果=−32999で、プロセッサ109が飽和を使用 可能にして符号付きワード・データ形式を使用した場合、結果は演算の宛先レジ スタに格納される前に−32768にクランプされることになる。 乗算 本発明の一実施形態では、標準CISC命令セット(パックされていないデー タ演算)をサポートするだけでなくパックされたデータの乗算もサポートするこ とによって、cscアプリケーションのパフォーマンスを向上させる。パックさ れた乗算を使用して、高速フーリエ変換、コサイン変換、およびその他のディジ タル/画像信号処理アルゴリズムの速度を高速化することができる。 本発明の一実施形態では、SRC1レジスタには被乗数データ(Source 1)が入れられ、SRC2レジスタには乗数データ(Source2)が入れら れ、DESTレジスタには乗算の積の部分(Result)が入れられる。すな わちSource1は、Source2のそれぞれのデータ要素を独立して乗じ られた各データ要素を有することになる。乗算のタイプに応じて、Result には積の上位ビットまたは下位ビットが含まれる。 本発明の一実施形態では、サポートされる乗算は以下の通りである。すなわち 、無符号パックされた上位乗算、符号付きパックされた上位乗算、およびパック された下位乗算である。上位|下位は乗算の積からどのビットをResultに 含めるかを示す。これは、2つのNビット数値の乗算の結果が2Nビットを有す る積になるためである。各結果データ要素は被乗数および乗数のデータ要素と同 じサイズであるため、結果では積の半分だけを表すことができる。上位乗算によ って上位ビットが結果として出力される。下位乗算によって下位ビットが結果と して出力される。たとえば、Source1[7:0]をSource2[7: 0]によって無符号上位乗算すると、その積の上位ビットが結果Result[ 7:0]として求められる。 本発明の一実施形態では、上位|下位演算変更子の使用によって、1つのデー タ要素から次に高いデータ要素へのオーバーフローの可能性がなくなる。すなわ ち、この変更子によって、プログラマはオーバーフローを心配せずに積のどのビ ットを結果に含めるかを選択することができる。プログラマはパックされた乗算 の組み合わせを使用して完全な2Nビットの積を得ることができる。たとえば、 プログラマは無符号パックされた上位乗算を使用し、次に同じSource1と Source2を使用して、下位パックされた乗算を使用することによって、完 全な(2N)積を得ることができる。上位乗算を行うのは、積の上位ビットのみ が積の重要な部分であることが多いためである。プログラマは、パックされてい ないデータ演算でしばしば必要になる切り捨てを先に行わなくても、積の上位ビ ットを求めることができる。 本発明の一実施形態では、Source2内の各データ要素が異なる値を持つ ことができる。これによって、プログラマはSource1内の各被乗数の乗数 として異なる値を使用する柔軟性が得られる。 第7図に、パックされたデータに対して乗算を行う方法の一実施形態を示す。 この実施形態は、第2図のプロセッサ109で実施することができる。 ステップ701で、プロセッサ109が受け取った制御信号207をデコーダ 202がデコードする。したがって、デコーダ202は、適切な乗算の命令コー ドと、整数レジスタ209内のSRC1 602、SRC2 603、およびD EST605アドレスと、符号付き|無符号と、上位|下位と、パックされたデ ータ内のデータ要素の長さとをデコードする。 ステップ702で、SRC1 602アドレスとSRC2 603アドレスが 与えられた場合、内部バス205を介してデコーダ202がレジスタ・ファイル 204内の整数レジスタ209にアクセスする。整数レジスタ209は機能ユニ ット203にSRC1 602レジスタに格納されているパックされたデータ( Source1)と、SRC2 603レジスタに格納されているパックされた データ(Source2)を供給する。すなわち、整数レジスタ209は、パッ クされたデータを内部バス205を介して機能ユニット203に伝達する。 ステップ703で、デコーダ202は機能ユニット203が適切なパックされ た乗算を実行することができるようにする。デコーダ202は、さらに、内部バ ス205を介してデータ要素のサイズと乗算の上位|下位も伝達する。 ステップ710で、データ要素のサイズによって次にどのステップを実行する かが決まる。データ要素のサイズが8ビット(バイト・データ)の場合、機能ユ ニット203はステップ712を実行する。しかしパックされたデータ内のデー タ要素のサイズが16ビット(ワード・データ)の場合、機能ユニット203は ステップ714を実行する。一実施形態では、16ビットのデータ要素サイズの パックされた乗算のみがサポートされる。他の実施形態では、8ビットと16ビ ットのデータ要素サイズのパックされた乗算がサポートされる。しかし、他の実 施形態では、32ビットのデータ要素サイズのパックされた乗算もサポートされ る。 データ要素のサイズが8ビットであると仮定すると、ステップ712が実行さ れる。ステップ712では、以下の演算が行われる。Source1のビット7 ないしゼロにSource2のビット7ないしゼロを乗じて、Resultのビ ット7ないし0を生成する。Source1のビット15ないし8にSourc e2のビット15ないし8を乗じてResultのビット15ないし8を生成す る。Source1のビット23ないし16にSource2のビット23ない し16を乗じてResultのビット23ないし16を生成する。Source 1のビット31ないし24にSource2のビット31ないし24を乗じてR esultのビット31ないし24を生成する。Source1のビット39な いし32にsource2のビット39ないし32を乗じてResultのビッ ト39ないし32を生成する。Source1のビット47ないし40にSou rce2のビット47ないし40を乗じてResultのビット47ないし40 を生成する。Source1のビット55ないし48にSource2のビット 55ないし48を乗じてResultのビット55ないし48を生成する。So urce1のビット63ないし56にSource2のビットを乗じてResu ltのビット63ないし56を生成する。 データ要素のサイズが16ビットであると仮定すると、ステップ714が実行 される。ステップ714では、以下の演算が行われる。Source1のビット 15ないし0にSouce2のビット15ないし0を乗じてResultのビッ ト15ないし0を生成する。Source1のビット31ないし16にSour ce2のビット31ないし16を乗じてResultのビット31ないし16を 生成する。Source1のビット47ないし32にSource2のビット4 7ないし32を乗じてResultのビット47ないし32を生成する。Sou rce1のビット63ないし48にSource2のビット63ないし48を乗 じてResultのビット63ないし48を生成する。 一実施形態では、ステップ712の乗算が同時に行われる。しかし、他の実施 形態では、これらの乗算は順次に行われる。他の実施形態では、これらの乗算の 一部が同時に行われ、一部は順次に行われる。これは、ステップ714の乗算に も同様に適用される。 ステップ720で、ResultがDESTレジスタに格納される。 表2に、パックされたワード・データに対するパックされた無符号上位乗算の レジスタ内表現を示す。最初の行のビットはSource1のパックされたデー タ表現である。2番目の行のビットはSource2のデータ表現である。3番 目の行のビットはResultのパックされたデータ表現である。各データ要素 ビットの下の数字はデータ要素番号である。たとえば、Source1データ要 素2は11111111 000000002である。 表3に、パックされたワード・データに対する符号付きパックされた上位乗算 のレジスタ内表現を示す。 表4に、パックされたワード・データに対するパックされた下位乗算のレジス タ内表現を示す。 パックされたデータ回路 一実施形態では、パックされていないデータに対する単一の乗算と同じクロッ ク・サイクル数で複数のデータ要素に対する乗算を行うことができる。同じクロ ック・サイクル数での実行を実現するために、並列処理を使用する。すなわち、 データ要素に対して乗算を行うように各レジスタが同時に命令される。これにつ いては以下で詳述する。第8図に、パックされていないデータに対する乗算と同 じクロック・サイクル数でパックされたデータに対する乗算を行うことができる 回路の一実施形態を示す。 第8図には、パックされたバイト乗算またはパックされたワード乗算を実行す るための乗算回路の使用が示されている。操作制御回路800が、乗算を行う回 路を制御する。操作制御回路800は、乗算のための制御信号を処理し、上位| 下位イネーブル信号880と、バイト|ワード・イネーブル信号881と符号イ ネーブル信号882を出力する。上位|下位イネーブル880は、積の上位ビッ トと下位ビットのどちらを結果に含めるかを識別する。バイト|ワード・イネー ブル881は、バイト・パックされたデータとワード・パックされたデータのど ちらの乗算を実行するかを識別する。符号イネーブル882は、符号付き乗算を 使用するかどうかを識別する。 パックされたワード乗算回路801は、4個のワード・データ要素を同時に乗 算する。パックされたバイト乗算回路802は、8個のバイト・データ要素を乗 算する。パックされたワード乗算回路801とパックされたバイト乗算回路80 2の両方が、Source1[63:0]831と、Source2[63:0 ]833と、符号イネーブル882と上位|下位イネーブル880の各入力を持 つ。 パックされたワード乗算回路801は4個の16×16乗算回路を含む。すな わち16×16乗算回路A810と、16×16乗算回路B811と、16×1 6乗算回路C812と16×16乗算回路D813である。16×16乗算回路 A810は入力としてSource1[15:0]とSource2[15:0 ]を持つ。16×16乗算回路B811は入力としてSource1[31:1 6]とSource2[31:16]を持つ。16×16乗算回路C812は入 力としてSource1[47:32]とSource2[47:32]を持つ 。16×16乗算回路D813は入力としてSource1[63:48]とS ource2[63:48]を持つ。各16×16乗算回路は符号イネーブル8 82に接続されている。各16×16乗算回路は32ビットの積を出力する。各 乗算回路について、マルチプレクサ(それぞれMx0 850、Mx1 851 、Mx2 852、およびMx3 853)が32ビットの結果を受け取る。上 位|下位イネーブル880の値に応じて、各マルチプレクサは積の上位16ビッ トまたは下位16ビットを出力する。4個のマルチプレクサの出力が組み合わさ れて64ビットの結果になる。この結果は任意選択で結果レジスタ1 871に 格納される。 パックされたバイト乗算回路802は、8×8乗算回路A820ないし8×8 乗算回路H827の8個の8×8乗算回路を含む。各8×8乗算回路は、Sou rce1[63:0]831とSource2[63:0]833のそれぞれか らの8ビットの入力を持つ。たとえば、8×8乗算回路A820は入力としてS ource1[7:0]とSource2[7:0]を持ち、8×8乗算回路H 827は入力としてSource1[63:56]とSource2[63:5 6]を持つ。各8×8乗算回路は符号イネーブル882に接続されている。各8 ×8乗算回路は16ビットの積を出力する。各乗算回路について、マルチプレク サ(たとえばMx4 860およびMx11 867)が16ビットの結果を受 け取る。上位|下位イネーブル880の値に応じて、各マルチプレクサは積の上 位8ビットまたは下位8ビットを出力する。8個のマルチプレクサの出力が組み 合わされて1つの64ビットの結果になる。この結果は任意選択で結果レジスタ 2 872に格納される。バイト|ワード・イネーブル881は、その演算に必 要なデータ要素のサイズに応じて、特定の結果レジスタを使用可能にする。 一実施形態では、2個の8×8数値の両方の乗算または1個の16×16数値 の乗算をすることができる回路を作成することによって、乗算を実現するために 使用される面積を小さくする。すなわち、2個の8×8乗算回路と1個の16× 16乗算回路を組み合わせて1個の8×8および16×16乗算回路とする。操 作制御回路800が乗算のための適切なサイズを使用可能にすることになる。こ のような実施形態では、乗算回路によって使用される物理的面積が小さくなるが 、パックされたバイト乗算とパックされたワード乗算を実行するのが難しくなる 。パックされたダブルワード乗算をサポートする他の実施形態では、1個の乗算 回路が4つの8×8乗算、2つの16×16乗算、または1つの32×32乗算 を実行することができる。 一実施形態では、パックされたワード乗算だけが行われる。この実施形態では 、パックされたバイト乗算回路802と結果レジスタ2 872が組み込まれる ことになる。 したがって、複数のデータ要素に対してパックされた乗算を行うことができる 。従来技術のプロセッサでは、それぞれが1ワード長の8個のデータを乗算する のに、4つの別々の乗算が必要になる。各演算で一度に2ワードが乗算されるこ とになり、ビット16より上のビットに使用されるデータ線と回路が事実上無駄 になる。また、積全体がプログラマの役に立つとは限らない。したがって、プロ グラマは各積を切り捨てなければならないことになる。パックされた乗算を使用 すると、上位ビットのみが重要な場合、プロセッサによって1回の演算で8個の データを乗算することができる。この実施形態では、データ線はすべて意味のあ るデータを伝達する。 以上、改良されたデータ乗算を有するマイクロプロセッサについて説明した。
【手続補正書】特許法第184条の8第1項 【提出日】1996年10月1日 【補正内容】 補正請求の範囲 1.第1のパックされたデータが第1の複数のデータ要素を含み、第2のパック されたデータが第2の複数のデータ要素を含み、前記第1の複数のデータ要素内 の各データ要素は、第2の複数のデータ要素内のデータ要素に対応している、前 記第1のパックされたデータと前記第2のパックされたデータを保持するように 構成された記憶装置と、 命令をデコードするように構成されたデコーダと、 記憶装置とデコーダとに結合され、命令に応答して、第1の複数のデータ要素 の各データ要素に第2の複数のデータ要素のうちの対応するデータ要素を同時に 乗じ、各結果データ要素が上位ビットのみを含む第3のパックされたデータ内の 複数の結果データ要素を生成する回路と を備えるプロセッサ。 2.各結果データ要素が下位ビットのみを含むことを特徴とする請求項1に記載 のプロセッサ。 3.第1、第2、および第3のパックされたデータがそれぞれ4個のパックされ たワード・データ要素を含み、各パックされたデータ要素が16ビットで表現さ れることを特徴とする請求項1に記載のプロセッサ。 4.前記回路が、命令に応答して第1の複数のデータ要素の各符号付きデータ要 素に第2の複数のデータ要素のうちの対応する符号付きデータ要素を同時に乗じ 、第3のパックされたデータ内の複数の符号付き結果データ要素を生成するよう に構成されていることを特徴とする請求項3に記載のプロセッサ。 5.第1、第2、および第3のパックされたデータがそれぞれ4個のパックされ たワード・データ要素を含み、各パックされたワード・データ要素が16ビット で表されることを特徴とする請求項2に記載のプロセッサ。 6.前記回路が、命令に応答して第1の複数のデータ要素の各符号付きまたは無 符号データ要素に第2の複数のデータ要素のうちの対応する符号付きまたは無符 号データ要素を同時に乗じ、第3のパックされたデータ内の複数の符号付きまた は無符号結果データ要素を生成するように構成されていることを特徴とする請求 項5に記載のプロセッサ。 7.前記回路が4個の16ビット乗算回路を含み、各乗算回路が第1の複数のデ ータ要素のうちのデータ要素と第2のパックされたデータのうちの対応するデー タ要素を受け取り、各乗算回路が上位/下位イネーブル入力を有し、各乗算回路 が別々のマルチプレクサに結合され、各マルチプレクサが16ビットの乗算回路 から32ビットの結果を受け取り、上位/下位イネーブル入力での入力値に応じ て、各マルチプレクサが32ビットの結果の上位16ビットまたは下位16ビッ トを生成し、生成された上位16ビットまたは下位16ビットが複数の結果デー タ要素として第3のパックされたデータに入れられることを特徴とする請求項1 に記載のプロセッサ。 8.第1の複数のデータ要素を有する第1のパックされたデータを保持するよう に構成され、かつ第2の複数のデータ要素を有する第2のパックされたデータを 保持するように構成された第1の記憶装置と、 第1の記憶装置に対応する第1のアドレスと、第2の記憶装置に対応する第2 のアドレスと、宛先アドレスと、第1の複数のデータ要素と第2の複数のデータ 要素との間で行う乗算とを示すパックされた乗算命令をデコードするように構成 されたデコーダと、 第1の記憶装置とデコーダとに結合され、パックされた乗算命令に応答して、 第1の複数のデータ要素の各データ要素に第2の複数のデータ要素のうちの対応 するデータ要素を並列して乗じ、各結果データ要素が上位ビットのみを含む第3 のパックされたデータ内の複数の結果データ要素を生成するように構成された回 路と を備えるプロセッサ。 9.各結果データ要素が下位ビットのみを含むことを特徴とする請求項8に記載 のプロセッサ。 10.第1、第2、および第3のパックされたデータがそれぞれ4個のパックさ れたワード・データ要素を含み、各パックされたワード・データ要素が16ビッ トで表されることを特徴とする請求項8に記載のプロセッサ。 11.回路が、命令に応答して、第1の複数のデータ要素の各符号付きデータ要 素に第2の複数のデータ要素のうちの対応する符号付きデータ要素を並列して乗 じ、第3のパックされたデータ内の複数の符号付きデータ要素を生成するように 構成されていることを特徴とする請求項10に記載のプロセッサ。 12.第1、第2、および第3のパックされたデータがそれぞれ4個のパックさ れたワード・データ要素を含み、各パックされたワード・データ要素が16ビッ トで表されることを特徴とする請求項9に記載のプロセッサ。 13.前記回路が、命令に応答して、第1の複数のデータ要素のうちの各符号付 きまたは無符号データ要素に第2の複数のデータ要素の内の対応する符号付きま たは無符号データ要素を並列して乗じ、第3のパックされたデータ内の複数の符 号付きまたは無符号結果データ要素を生成するように構成されていることを特徴 とする請求項12に記載のプロセッサ。 14.前記回路が4個の16ビット乗算回路を含み、各乗算回路が第1の複数の データ要素のうちのデータ要素と第2のパックされたデータ要素のうちの対応す るデータ要素とを受け取り、各乗算回路が上位/下位イネーブル入力を有し、各 乗算回路が別々のマルチプレクサに結合され、各マルチプレクサがそれぞれの1 6ビット乗算回路から32ビットの結果を受け取り、上位/下位イネーブル入力 での入力値に応じて、各マルチプレクサが32ビットの結果の上位16ビットま たは下位16ビットを生成し、生成された上位16ビットまたは下位16ビット が複数の結果データ要素として第3のパックされたデータに入れられることを特 徴とする請求項8に記載のプロセッサ。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AP(KE,LS,MW,SD,SZ,U G),AL,AM,AT,AT,AU,BB,BG,B R,BY,CA,CH,CN,CZ,CZ,DE,DE ,DK,DK,EE,EE,ES,FI,FI,GB, GE,HU,IS,JP,KE,KG,KP,KR,K Z,LK,LR,LS,LT,LU,LV,MD,MG ,MK,MN,MW,MX,NO,NZ,PL,PT, RO,RU,SD,SE,SG,SI,SK,SK,T J,TM,TT,UA,UG,UZ,VN (72)発明者 ミタル,ミリンド アメリカ合衆国・94080・カリフォルニア 州・サウス サンフランシスコ・ヒルサイ ド ブルバード・1149 (72)発明者 メネマイアー,ラリー・エム アメリカ合衆国・95006・カリフォルニア 州・ボルダークリーク・ピーオー ボック ス・587 (72)発明者 エイタン,ベニー イスラエル国・ハイファ・スティーブン ウィース・25

Claims (1)

  1. 【特許請求の範囲】 1.第1の場所に対応する第1のソース・アドレスと、第2の場所に対応する第 2のソース・アドレスと、第3の場所に対応する宛先アドレスと、あるタイプの パックされたデータ乗算を行うことを示す命令フィールドとを有する制御信号を 受信するように結合されたデコーダと、 前記デコーダに結合され、前記第1の場所に格納されている第1のパックされ たデータに第2の場所に格納されている第2のパックされたデータを乗じ、対応 する結果パックされたデータを前記第3の場所に伝達する回路とを備えるプロセ ッサ。 2.前記第1のパックされたデータが複数のデータ要素を含み、前記複数のデー タ要素の各データ要素がサイズを有し、前記命令フィールドが前記サイズに対応 する標識をさらに含むことを特徴とする、請求項1に記載のプロセッサ。 3.前記サイズがパックされたバイトとパックされたワードとパックされたダブ ルワードとのうちの1つであることを特徴とする、請求項2に記載のプロセッサ 。 4.前記第1のパックされたデータが64ビットであることを特徴とする、請求 項2に記載のプロセッサ。 5.前記宛先アドレスが前記第1のソース・アドレスであることを特徴とする、 請求項1に記載のプロセッサ。 6.前記命令フィールドが、前記結果パックされたデータが前記乗算について上 位パックされたデータと下位パックされたデータのどちらを含むかを規定するこ とを特徴とする、請求項1に記載のプロセッサ。 7.前記タイプのパックされたデータ乗算が符号付き上位乗算、無符号上位乗算 、および下位乗算のうちの1つであることを特徴とする、請求項1にプロセッサ 。 8.前記プロセッサが、レジスタを含むレジスタ・ファイルを備え、前記第2の 場所が前記レジスタに対応することを特徴とする、請求項1に記載のプロセッサ 。 9.前記第1の場所が記憶場所に対応することを特徴とする、請求項8に記載の プロセッサ。 10.デコーダが機能ユニットと第1のレジスタと第2のレジスタとに結合され 、 前記デコーダと前記機能ユニットと前記第1のレジスタと前記第2のレジスタと を有するプロセッサにおいて、パックされたデータを乗算する方法であって、 前記デコーダが制御信号をデコードするステップと、 前記第1のレジスタに格納された第1のパックされたデータにアクセスするス テップと、 前記第2のレジスタに格納された第2のパックされたデータにアクセスするス テップと、 前記制御信号をデコードする前記デコーダに応答して、前記機能ユニットが前 記第1のパックされたデータに前記第2のパックされたデータを乗じ、結果パッ クされたデータを生成するステップと、 前記結果パックされたデータを前記第1のレジスタに格納するステップとを含 む方法。 11.前記制御信号があるタイプの乗算標識を含み、前記タイプの乗算標識が符 号付き上位乗算と無符号上位乗算と下位乗算のグループのうちの1つの乗算を示 すことを特徴とする、請求項10に記載の方法。 12.前記第1のパックされたデータが複数のデータ要素を含み、前記複数のデ ータ要素の各データ要素が所定のビット数によって表され、前記制御信号がサイ ズ標識を含み、前記サイズ標識が前記所定のビット数を示すことを特徴とする、 請求項10に記載の方法。 13.前記第1のレジスタが64ビット長であり、前記第1のパックされたデー タが8個のパックされたバイト・データ要素を含むことを特徴とする、請求項1 0に記載の方法。 14.前記乗算の結果として2倍サイズのデータ要素が得られ、前記2倍サイズ のデータ要素が前記第1のパックされたデータ内のデータ要素のサイズの2倍で あり、前記結果パックされたデータ内のデータ要素が前記2倍サイズのデータ要 素の半分であることを特徴とする、請求項10に記載の方法。
JP8519114A 1994-12-01 1995-12-01 乗算を有するマイクロプロセッサ Pending JPH11500547A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US34955994A 1994-12-01 1994-12-01
US08/349,559 1994-12-01
PCT/US1995/015681 WO1996017293A1 (en) 1994-12-01 1995-12-01 A microprocessor having a multiply operation

Publications (1)

Publication Number Publication Date
JPH11500547A true JPH11500547A (ja) 1999-01-12

Family

ID=23372917

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8519114A Pending JPH11500547A (ja) 1994-12-01 1995-12-01 乗算を有するマイクロプロセッサ

Country Status (7)

Country Link
US (2) US5677862A (ja)
EP (2) EP0795155B1 (ja)
JP (1) JPH11500547A (ja)
AU (1) AU4738396A (ja)
HK (2) HK1057108A1 (ja)
TW (1) TW309605B (ja)
WO (1) WO1996017293A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002544587A (ja) * 1999-05-12 2002-12-24 アナログ デバイセス インコーポレーテッド デジタル信号プロセッサ計算コア
US7668897B2 (en) 2003-06-16 2010-02-23 Arm Limited Result partitioning within SIMD data processing systems
US7689641B2 (en) 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
US9329862B2 (en) 2003-06-30 2016-05-03 Intel Corporation SIMD sign operation
JP2017529597A (ja) * 2014-09-25 2017-10-05 インテル・コーポレーション ビット群インターリーブプロセッサ、方法、システムおよび命令

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1326033C (zh) 1994-12-02 2007-07-11 英特尔公司 可以对复合操作数进行压缩操作的微处理器
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5953241A (en) * 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6470370B2 (en) 1995-09-05 2002-10-22 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
US6058408A (en) * 1995-09-05 2000-05-02 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
US5983253A (en) * 1995-09-05 1999-11-09 Intel Corporation Computer system for performing complex digital filters
US5936872A (en) * 1995-09-05 1999-08-10 Intel Corporation Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations
US6237016B1 (en) 1995-09-05 2001-05-22 Intel Corporation Method and apparatus for multiplying and accumulating data samples and complex coefficients
US5940859A (en) 1995-12-19 1999-08-17 Intel Corporation Emptying packed data state during execution of packed data instructions
US6792523B1 (en) 1995-12-19 2004-09-14 Intel Corporation Processor with instructions that operate on different data types stored in the same single logical register file
US5701508A (en) 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file
US6490607B1 (en) * 1998-01-28 2002-12-03 Advanced Micro Devices, Inc. Shared FP and SIMD 3D multiplier
US6211892B1 (en) * 1998-03-31 2001-04-03 Intel Corporation System and method for performing an intra-add operation
US6418529B1 (en) 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
US7392275B2 (en) * 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
US7395302B2 (en) 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
US6098087A (en) * 1998-04-23 2000-08-01 Infineon Technologies North America Corp. Method and apparatus for performing shift operations on packed data
ATE467171T1 (de) * 1998-08-24 2010-05-15 Microunity Systems Eng System mit breiter operandenarchitektur und verfahren
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
US6272512B1 (en) 1998-10-12 2001-08-07 Intel Corporation Data manipulation instruction for enhancing value and efficiency of complex arithmetic
US7587582B1 (en) 1998-12-03 2009-09-08 Sun Microsystems, Inc. Method and apparatus for parallel arithmetic operations
US6546480B1 (en) * 1999-10-01 2003-04-08 Hitachi, Ltd. Instructions for arithmetic operations on vectored data
WO2002015000A2 (en) * 2000-08-16 2002-02-21 Sun Microsystems, Inc. General purpose processor with graphics/media support
US7127593B2 (en) * 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
US6813627B2 (en) * 2001-07-31 2004-11-02 Hewlett-Packard Development Company, L.P. Method and apparatus for performing integer multiply operations using primitive multi-media operations that operate on smaller operands
GB2389678A (en) * 2002-06-14 2003-12-17 Univ Sheffield Finite field processor reconfigurable for varying sizes of field.
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
US7433912B1 (en) 2004-02-19 2008-10-07 Sun Microsystems, Inc. Multiplier structure supporting different precision multiplication operations
US7672989B2 (en) * 2005-05-09 2010-03-02 Sandisk Il Ltd. Large number multiplication method and device
CN104011652B (zh) * 2011-12-30 2017-10-27 英特尔公司 打包选择处理器、方法、系统和指令
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
US20160188327A1 (en) * 2014-12-24 2016-06-30 Elmoustapha Ould-Ahmed-Vall Apparatus and method for fused multiply-multiply instructions
GB2568230B (en) * 2017-10-20 2020-06-03 Graphcore Ltd Processing in neural networks

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3711692A (en) * 1971-03-15 1973-01-16 Goodyear Aerospace Corp Determination of number of ones in a data field by addition
US3723715A (en) * 1971-08-25 1973-03-27 Ibm Fast modulo threshold operator binary adder for multi-number additions
US4161784A (en) * 1978-01-05 1979-07-17 Honeywell Information Systems, Inc. Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands
US4418383A (en) * 1980-06-30 1983-11-29 International Business Machines Corporation Data flow component for processor and microprocessor systems
US4393468A (en) * 1981-03-26 1983-07-12 Advanced Micro Devices, Inc. Bit slice microprogrammable processor for signal processing applications
US4498177A (en) * 1982-08-30 1985-02-05 Sperry Corporation M Out of N code checker circuit
JPS60134974A (ja) * 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
US4707800A (en) * 1985-03-04 1987-11-17 Raytheon Company Adder/substractor for variable length numbers
JPS6284335A (ja) * 1985-10-09 1987-04-17 Hitachi Ltd 乗算回路
JPS6297060A (ja) * 1985-10-23 1987-05-06 Mitsubishi Electric Corp デイジタルシグナルプロセツサ
US4985848A (en) * 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
US4989168A (en) * 1987-11-30 1991-01-29 Fujitsu Limited Multiplying unit in a computer system, capable of population counting
US5126964A (en) * 1988-04-01 1992-06-30 Digital Equipment Corporation High performance bit-sliced multiplier circuit
US4953119A (en) * 1989-01-27 1990-08-28 Hughes Aircraft Company Multiplier circuit with selectively interconnected pipelined multipliers for selectively multiplication of fixed and floating point numbers
KR920007505B1 (ko) * 1989-02-02 1992-09-04 정호선 신경회로망을 이용한 곱셈기
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
US5268854A (en) * 1990-11-13 1993-12-07 Kabushiki Kaisha Toshiba Microprocessor with a function for three-dimensional graphic processing
US5363322A (en) * 1991-04-02 1994-11-08 Motorola, Inc. Data processor with an integer multiplication function on a fractional multiplier
US5187679A (en) * 1991-06-05 1993-02-16 International Business Machines Corporation Generalized 7/3 counters

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002544587A (ja) * 1999-05-12 2002-12-24 アナログ デバイセス インコーポレーテッド デジタル信号プロセッサ計算コア
US7668897B2 (en) 2003-06-16 2010-02-23 Arm Limited Result partitioning within SIMD data processing systems
US7689641B2 (en) 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
US9329862B2 (en) 2003-06-30 2016-05-03 Intel Corporation SIMD sign operation
US9678753B2 (en) 2003-06-30 2017-06-13 Intel Corporation SIMD sign operation
US9858076B2 (en) 2003-06-30 2018-01-02 Intel Corporation SIMD sign operation
US10474466B2 (en) 2003-06-30 2019-11-12 Intel Corporation SIMD sign operation
JP2017529597A (ja) * 2014-09-25 2017-10-05 インテル・コーポレーション ビット群インターリーブプロセッサ、方法、システムおよび命令

Also Published As

Publication number Publication date
EP0795155A4 (en) 1999-08-11
HK1003189A1 (en) 1998-10-16
WO1996017293A1 (en) 1996-06-06
US5675526A (en) 1997-10-07
HK1057108A1 (en) 2004-03-12
TW309605B (ja) 1997-07-01
EP0795155A1 (en) 1997-09-17
EP1302848A3 (en) 2003-05-14
AU4738396A (en) 1996-06-19
EP0795155B1 (en) 2003-03-19
EP1302848A2 (en) 2003-04-16
EP1302848B1 (en) 2006-11-02
US5677862A (en) 1997-10-14

Similar Documents

Publication Publication Date Title
JPH11500547A (ja) 乗算を有するマイクロプロセッサ
JP3924307B2 (ja) 算術演算装置及び算術演算方法
JP3615222B2 (ja) 複合オペランドのパック演算機能を有するマイクロプロセッサ
US5859997A (en) Method for performing multiply-substrate operations on packed data
US5983256A (en) Apparatus for performing multiply-add operations on packed data
US6014684A (en) Method and apparatus for performing N bit by 2*N-1 bit signed multiplication
US5959874A (en) Method and apparatus for inserting control digits into packed data to perform packed arithmetic operations
US6901420B2 (en) Method and apparatus for performing packed shift operations
US5819101A (en) Method for packing a plurality of packed data elements in response to a pack instruction
US5835392A (en) Method for performing complex fast fourier transforms (FFT's)
JP3750820B2 (ja) パック・データの乗加算演算を実行する装置
WO1996017292A1 (en) Microprocessor with compare operation of composite operands

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040518

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040818

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20041004

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050411

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050531