JP3615222B2 - 複合オペランドのパック演算機能を有するマイクロプロセッサ - Google Patents
複合オペランドのパック演算機能を有するマイクロプロセッサ Download PDFInfo
- Publication number
- JP3615222B2 JP3615222B2 JP51912596A JP51912596A JP3615222B2 JP 3615222 B2 JP3615222 B2 JP 3615222B2 JP 51912596 A JP51912596 A JP 51912596A JP 51912596 A JP51912596 A JP 51912596A JP 3615222 B2 JP3615222 B2 JP 3615222B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- bit
- bits
- packed
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 claims description 28
- 238000012856 packing Methods 0.000 claims description 3
- 229920006395 saturated elastomer Polymers 0.000 claims description 2
- 230000004044 response Effects 0.000 claims 6
- 230000005236 sound signal Effects 0.000 claims 1
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 25
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 25
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49921—Saturation, i.e. clipping the result to a minimum or maximum value
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
発明の分野
本発明は、単一の制御信号を使用して複数のデータ要素を操作する演算を行う装置および方法を含む。本発明は、パックされたデータ(パックドデータ)・データ・タイプに対する移動演算、パック演算、およびアンパック演算の実行を可能にする。
関連技術の説明
現在、ほとんどのパーソナル・コンピュータ・システムは1つの命令によって演算を行って1つの結果を出す。命令の実行速度とプロセッサ命令の複雑さを増すことと、複数の命令を並列して実行することによって、パフォーマンスの向上が実現され、これは複雑命令セット・コンピュータ(CISC,Complex Instruction Set Computer)と呼ばれる。米国カリフォルニア州サンタクララ所在のインテル・コーポレイションが販売するIntel80286TMマイクロプロセッサのようなプロセッサがCISCプロセッサの範疇に入る。
以前のコンピュータ・システム・アーキテクチャは、CISCの概念を利用するように最適化されていた。そのようなシステムは一般に、32ビット幅のデータ・バスを持つ。しかし、コンピュータ・サポーテッド・コオペレーション(CSC:電子会議と混在メディア・データ操作を統合したもの)、二次元/三次元グラフィックス、画像処理、ビデオ圧縮/圧縮解除、認識アルゴリズム、および音声操作を対象にしたアプリケーションによって、パフォーマンス向上の必要が増す。しかし、命令の実行速度と複雑さを増すことが唯一の解決策である。
これらのアプリケーションの1つの一般的な点は、数ビットだけが重要な、大量のデータを操作することが多いことである。すなわち、意味のあるビットがデータ・バスのサイズよりもはるかに少ないビット数で表されるデータである。たとえば、プロセッサは8ビットおよび16ビットのデータ(たとえばビデオ画像における画素の色成分)に対して多くの演算を実行するが、それよりかなり広いでデータ・バスとレジスタを有する。したがって、32ビットのデータ・バスとレジスタを有し、これらのアルゴリズムの1つを実行するプロセッサは、データの先頭8ビットだけが重要であるため、そのデータの処理、伝送、および記憶容量の最大75パーセントが無駄になることがある。
したがって、操作するデータを表すのに必要なビット数とプロセッサの実際のデータ伝送および記憶容量との差をより効率的に使用することによってパフォーマンスを向上させるプロセッサが望ましい。
発明の概要
複数のデータ要素に対して作用するシフト演算(シフトオペレーション)を有するプロセッサについて説明する。
このプロセッサは、第1のパックドデータを格納する第1のレジスタと、デコーダと、機能ユニットとを備える。デコーダは、制御信号入力を有する。制御信号入力は、第1の制御信号と第2の制御信号を受け取る。第1の制御信号はパック演算を示す。第2の制御信号はアンパック演算を示す。機能ユニットはデコーダとレジスタとに結合されている。機能ユニットは、第1のパックドデータを使用してパック演算とアンパック演算を行う。プロセッサは移動演算もサポートする。
本説明および図には多くの詳細が含まれるが、本発明は請求の範囲によって定義される。本発明には、それらの請求の範囲に記載されている限定だけが適用される。
【図面の簡単な説明】
本発明を、図面に限定的なものではなく例として図示する。同様の参照符号は同様の要素を示す。
第1図は、本発明の方法および装置を使用するコンピュータ・システムの実施例を示す図である。
第2図は、本発明のプロセッサの実施例を示す図である。
第3図は、プロセッサがレジスタ・ファイル内のデータを操作するために使用する一般的なステップを示す流れ図である。
第4a図は、記憶データ・タイプを示す図である。
第4b図、第4c図、および第4d図は、レジスタ内整数データ表現を示す図である。
第5a図は、パックドデータ・タイプを示す図である。
第5b図、第5c図、および第5d図は、レジスタ内パックドデータ表現を示す図である。
第6a図は、パックドデータの使用を示す、コンピュータ・システムで使用される制御信号形式の図である。
第6b図は、パックドデータまたは整数データの使用を示す、コンピュータ・システムで使用可能な第2の制御信号形式の図である。
第7図は、パックドデータに対してシフト演算を行うときにプロセッサが従う方法の一実施例を示す図である。
第8a図は、パックドバイト・データに対するパック演算を実施することができる回路を示す図である。
第8b図は、パックドワード・データに対するパック演算を実施することができる回路を示す図である。
第9図は、パックドデータに対するアンパック演算を行う場合にプロセッサがたどる方法の一実施例を示す図である。
第10図は、パックドデータに対するアンパック演算を実施することができる回路を示す図である。
好ましい実施例の説明
本発明の一実施例の概要
複数のデータ要素に対して作用する移動演算(ムーブオペレーション)とパック演算とアンパック演算の機能を有するプロセッサについて説明する。以下の説明では、本発明を十分に理解することができるように、回路などの多くの特定の詳細を記載する。他の場合には、本発明が無用に不明瞭にならないように、周知の構造および技法については詳細に示さない。
定義
本発明の実施形態の説明を理解する基礎となるように、以下のように定義を示す。
ビットXないしビットY:二進数のサブフィールドを規定する。たとえば、(基数2で示した)バイト001110102のビット6ないしビット0は、1サブフィールド110102を表す。二進数の後の下付け文字「2」は基数2を示す。したがって、10002は810に等しく、F16は1510に等しい。
Rx:レジスタである。レジスタは、データの記憶と供給を行うことができる任意の素子である。レジスタの他の機能については後述する。レジスタはプロセッサのパッケージの一部であるとは限らない。
DEST:データ・アドレスである。
SRC1:データ・アドレスである。
SRC2:データ・アドレスである。
結果(Result):DESTによってアドレス指定されたレジスタに格納されるデータである。
ソース1:SRC1によってアドレス指定されたレジスタに格納されているデータである。
ソース2:SRC2によってアドレス指定されたレジスタに格納されているデータである。
コンピュータ・システム
第1図を参照すると、本発明の実施例を実施することができるコンピュータ・システムが、コンピュータ・システム100として図示されている。コンピュータ・システム100は、情報を伝送するバス101またはその他の通信ハードウェアおよびソフトウェアと、バス101に結合された情報を処理するプロセッサ109とを備える。コンピュータ・システム100はさらに、バス101に結合され、プロセッサ109によって実行される情報と命令を記憶するランダム・アクセス・メモリ(RAM)またはその他のダイナミック記憶装置(メイン・メモリ104と呼ぶ)を備える。メイン・メモリ104は、プロセッサ109による命令の実行中に変数またはその他の中間情報を一時的に記憶するためにも使用することができる。コンピュータ・システム100は、バス101に結合され、プロセッサ109のための静的情報および命令を記憶する読取り専用メモリ(ROM)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は、BiCMOS、CMOS、NMOSなどのいくつかの処理技法のいずれかを使用して、1つまたは複数の基板上に実装することができる。
プロセッサ109は、プロセッサ109が使用する制御信号とデータをデコードするデコーダ202を備える。その場合、データは内部バス205を介してレジスタ・ファイル204に格納することができる。明確に言えば、実施例のレジスタは特定のタイプの回路にのみに限定されることを意味しない。むしろ実施例のレジスタは、データの記憶および供給と、本明細書に記載の機能を実行することができればよい。
データは、データのタイプに応じて、整数レジスタ201、レジスタ209、状態レジスタ208、または命令ポインタ・レジスタ211に格納することができる。たとえば浮動小数点レジスタなど他のレジスタをレジスタ・ファイル204に含めることができる。一実施例では、整数レジスタ201には、32ビットの整数データが格納される。一実施例では、レジスタ209にはR0212a〜R7212hの8個のレジスタが含まれる。レジスタ209内の各レジスタ長は64ビットである。R1212a、R2212b、およびR3212cがレジスタ209内の個々のレジスタの例である。レジスタ209内の32ビットのレジスタを、整数レジスタ201内の整数レジスタに移動させることができる。同様に、整数レジスタ内の値をレジスタ209内の32ビットのレジスタに移動させることができる。
状態レジスタ208は、プロセッサ109の状況を示す。命令ポインタ・レジスタ211には、次に実行される命令のアドレスが格納される。整数レジスタ201,レジスタ209、状態レジスタ208、および命令ポインタ・レジスタ211はすべて内部バス205に接続されている。内部バスには任意の追加のレジスタが接続される。
他の実施例では、これらのレジスタのうちのいくつかは2つの異なるタイプのデータに使用することができる。たとえば、レジスタ209と整数レジスタ201を組み合わせて、各レジスタに整数データまたはパックドデータを格納することができる。他の実施例では、レジスタ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は、すべて米国カリフォルニア州サンタクララ所在のインテル・コーポレイションが販売するPentiumTMプロセッサ、Intel80486TMプロセッサ、80386TMプロセッサ、Intel80286TMプロセッサ、およびIntel8086TMプロセッサによってサポートされるすべての演算をサポートする。本発明の他の実施例では、プロセッサ109は、米国カリフォルニア州サンタクララ所在のインテル・コーポレイションが定義するIATM(インテル・アーキテクチャ)でサポートされるすべての演算をサポートする(米国カリフォルニア州サンタクララのインテルから入手可能な「Microprocessors,Intel Data Books volume1およびvolume2、1992年および1993年刊」を参照)。一般に、プロセッサ109はPentiumTMプロセッサの現行命令セットをサポートすることができるが、将来の命令と本明細書に記載の命令を組み込むように修正することもできる。重要なのは、汎用プロセッサ109が、本明細書に記載の演算に加えて、従来使用されていた演算をサポートすることができることである。
ステップ301で、デコーダ202がキャッシュ206またはバス101から制御信号207を受け取る。デコーダ202は、制御信号をデコードして、実行すべき演算を判断する。
ステップ302で、デコーダ202はレジスタ・ファイル204またはメモリ内の記憶場所にアクセスする。制御信号207で指定されたレジスタ・アドレスに応じて、レジスタ・ファイル204内のレジスタかメモリ内の記憶場所のどちらかにアクセスする。たとえば、パックドデータに対する演算の場合、制御信号207にはSRC1、SRC2、およびDESTレジスタ・アドレスを含めることができる。SRC1は第1のソース・レジスタのアドレスである。SRC2は第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のレジスタを識別し、DESTはレジスタ209内の第2のレジスタを識別する。本明細書では説明を簡単にするために、レジスタ・ファイル204へのアクセスについて言及するが、これらのアクセスはレジスタ・ファイル204の代わりにメモリに対して行うこともできる。
本発明の他の実施例では、命令コードはSRC1とSRC2の2つのアドレスしか含まない。この実施例では、演算の結果はSRC1レジスタまたはSRC2レジスタに格納される。すなわち、SRC1(またはSRC2)をDESTとして使用する。このタイプのアドレス指定は、2つのアドレスしか持たない以前のCISC命令に対応する。これによって、デコーダ202における複雑さが減少する。この実施例では、SRC1レジスタに含まれるデータを破壊してはならない場合、演算を実行する前にそのデータをまず別のレジスタにコピーしなければならないことに留意されたい。コピーには追加の命令が必要になる。本明細書では説明を簡単にするために、3アドレスのアドレス指定方式について説明する(すなわちSRC1、SRC2、およびDEST)。しかし、一実施例では制御信号にSRC1とSRC2しか含めることができず、SRC1(またはSRC2)によって宛先レジスタを識別することを想起されたい。
制御信号が演算を要求とする場合、ステップ303で、機能ユニット203がレジスタ・ファイル204内のアクセス・データに対してその演算を実行するように使用可能にされる。機能ユニット203で演算が実行されると、ステップ304でその結果が制御信号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が整数レジスタ201にバイト401を格納し、そのレジスタ内のビット7ないしビット0の先頭8ビットがそのデータ・バイト401専用であることを示している。これらのビットを{b}と示す。このバイトを正しく表すには、残りの56ビットがゼロでなければならない。符号付きバイトのレジスタ内表現411の場合、整数レジスタ201にはデータはビット6ないしビット0の先頭7ビットにデータとして格納される。7番目のビットは符号ビットを表し、{s}で示す。残りのビット63ないしビット8はそのバイトの符号の継続である。
無符号ワードのレジスタ内表現412は、レジスタ201のうちの1つのレジスタに格納される。ビット15ないしビット0には、無符号ワード402が入れられる。これらのビットを{w}で示す。このワードを正しく表すには、残りのビット63ないしビット16はゼロでなければならない。符号付きワード402は、符号付きワードのレジスタ内表現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%しか使用しない。同様に、機能ユニット203によって実行される命令は先頭の数ビットしか重要ではない。
第5a図に、パックされたデータすなわちパックドデータのデータ形式を示す。各パックドデータは複数の独立したデータ要素を含む。パックドバイト(パックされたバイト)501、パックドワード(パックされたワード)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ないしビット32にはデータ要素ワード2の情報が入り、ビット63ないしビット48にはデータ要素ワード3の情報が入る。符号付きパックドワードのレジスタ内表現513は無符号パックドワードのレジスタ内表現512と同様である。各ワード・データ要素の16番目のビットにのみ、必要な符号インジケータが入ることに留意されたい。
無符号パックドダブルワードのレジスタ内表現514は、レジスタ209に2個のダブルワード・データ要素が格納される様子を示している。ダブルワード0はレジスタのビット31ないしビット0に格納される。ダブルワード1はレジスタのビット63ないしビット32に格納される。符号付きパックドダブルワードのレジスタ内表現515は無符号パックドダブルワードのレジスタ内表現514と同様である。必要な符号ビットはダブルワード・データ要素の32番目のビットであることに留意されたい。
前述のように、レジスタ209はパックドデータと整数データとの両方に使用することができる。本発明のこの実施例では、アドレス指定されたレジスタ、たとえばR1212aにパックドデータと単純整数/固定小数点データのどちらが格納されているかを追跡するために、個々のプログラミング・プロセッサ109が必要である。他の実施例では、プロセッサ109はレジスタ209の個々のレジスタに格納されているデータのタイプを追跡することができる。この代替実施例では、たとえば単純/固定小数点整数データに対してパック加算を行おうとした場合、エラーを生成することができる。
制御信号の形式
以下に、プロセッサ109がパックドデータを操作するために使用する制御信号形式の一実施例について説明する。本発明の一実施例では、制御信号は32ビットで表される。デコーダ202はバス101から制御信号207を受け取ることができる。他の実施例では、デコーダ202はキャッシュ206からもそのような制御信号を受け取ることができる。
第6a図にパックドデータを操作する制御信号の一般的な形式を示す。命令フィールドOP601(ビット31ないしビット26)は、たとえば、パック加算、パック減算など、プロセッサ109によって実行される演算に関する情報を与える。SRC1 602(ビット25ないしビット20)は、レジスタ209内のレジスタのソース・レジスタ・アドレスを供給する。このソース・レジスタは、制御信号の実行で使用される第1のパックドデータSource1を保持する。同様に、SRC2 603(ビット19ないしビット14)には、レジスタ209内のレジスタのアドレスが入れられる。この第2のソース・レジスタは、演算の実行時に使用されるパックドデータSource2を保持する。DEST605(ビット5ないしビット0)にはレジスタ209内のレジスタのアドレスが入れられる。この宛先レジスタには、パックドデータ演算の結果パックドデータResultが格納される。
制御ビットSZ610(ビット12およびビット13)は、第1および第2のパックドデータ・ソース・レジスタ内のデータ要素の長さを示す。SZ610が012に等しい場合、パックドデータはパックドバイト501としてフォーマットされる。SZ610が102に等しい場合、パックドデータはパックドワード502としてフォーマットされる。しかし、002または112と等しいSZ610を受け取った場合、他の実施例では、これらの値のうちの1つを使用してパックドダブルワード503を示すことができる。
制御ビットT611(ビット11)は、演算を飽和モードで行うかどうかを示す。T611が1の場合、飽和演算が行われる。T611がゼロの場合、非飽和演算が行われる。飽和演算については後述する。
制御ビットS612(ビット10)は、符号付き演算の使用を示す。S612が1の場合、符号付き演算が行われる。S612がゼロの場合、無符号演算が行われる。
第6b図に、パックドデータを操作する制御信号の第2の一般的形式を示す。この形式は、米国イリノイ州マウント・プロスペクトP.O.Box7641インテル・コーポレイションのLiterature Salesから入手可能な"PentiumTM Processor Family User's Manual"に記載されている汎用整数命令コード形式に対応する。OP601、SZ610、T611、およびS612がすべて組み合わされて1つの大きなフィールドになることに留意されたい。制御信号によっては、ビット3ないし5がSRC1 602となる。一実施例では、SRC1 602アドレスがある場合、ビット3ないし5はDEST605にも対応する。SRC2 603アドレスが存在する代替実施例ではビット0ないし2もDEST605に対応する。パックドシフト即値演算のような他の制御信号の場合、ビット3ないし5は命令コード・フィールドの拡張部を表す。一実施例では、この拡張部によってプログラマはシフト・カウント値などの即値を制御信号と共に組み込むことができる。一実施例では、即値は制御信号の後に続く。これについては"PentiumTM Processor Family User's Manual"の付録FのF−1〜F−3ページに詳述されている。ビット0ないし2はSRC2 603を表す。この汎用形式によって、レジスタからレジスタ、メモリからレジスタ、メモリによるレジスタ、レジスタによるレジスタ、即値によるレジスタ、レジスタからメモリのアドレス指定を行うことができる。また、一実施例では、この汎用形式は整数レジスタからレジスタと、レジスタから整数レジスタへのアドレス指定もサポートする。
飽和/非飽和の説明
前述のように、T611は演算が任意選択で飽和するかどうかを示す。飽和を可能にした演算の結果がデータの範囲からオーバーフローまたはアンダーフローする場合、その結果はクランプされる。クランプとは、結果がその範囲の最大値または最小値を超える場合、その結果を最大値または最小値に設定することを意味する。アンダーフローの場合、飽和によって結果がその範囲内の最低値にクランプされ、オーバーフローの場合は最高値にクランプされる。各データ形式の許容範囲を表1に示す。
前述のように、T611は飽和演算を行うかどうかを示す。したがって、無符号バイト・データ形式を使用し、演算結果=258で、飽和を使用可能にしていた場合、結果は演算の宛先レジスタに格納される前に255にクランプされることになる。同様に、演算結果=−32999で、プロセッサ109が飽和を使用可能にして符号付きデータ形式を使用した場合、結果は演算の宛先レジスタに格納される前に−32768にクランプされることになる。
データ操作演算
本発明の一実施例では、標準CISC命令セット(アンパックドデータ演算)をサポートするだけでなくパックドデータのシフト演算もサポートすることによって、マルチメディア・アプリケーションのパフォーマンスを向上させる。このようなパックドデータ演算には、加算、減算、乗算、比較、シフト、AND、およびXORを含めることができる。しかし、これらの演算を十分に利用するためには、データ操作演算を組み込む必要があると判断されている。このようなデータ操作演算には、移動、パック、アンパックを含めることができる。移動、パック、およびアンパックは、プログラマにとってより使いやすい形式のパックドデータを生成することによって他の演算の実行を容易にする。
他のパック演算の詳細な背景については、1994年12月2日出願の特許出願第349、040号“A Microprocessor Having a Compare Operation"、1994年12月1日出願の特許出願第349、559号“A Microprocessor Having a Multiply Operation"、1994年12月11日出願の特許出願第349、730号“A Novel Processor Having Shift Operations"、1993年12月30日出願の特許出願第08/176132号“A Method and Apparatus Using Packed Data in a Processor"および1993年12月30日出願の特許出願第08/175772号“A Method and Apparatus Using Novel Operations in a Processor"を参照された。これらはすべて本発明の譲渡人に譲渡される。
移動演算
移動演算は、レジスタ209との間でデータを送受信する。一実施例では、SRC2 603がソース・データを含むアドレスであり、DEST605がデータの送り先のアドレスである。この実施例では、SRC1 602は使用しない。他の実施例では、SRC1 602はDEST605である。
移動演算の説明のために、レジスタと記憶場所との区別を設ける。レジスタはレジスタ・ファイル204内にあり、記憶場所はたとえばキャッシュ206,メイン・メモリ104、ROM106、データ記憶装置107内とすることができる。
移動演算によって、データを記憶場所からレジスタ209、レジスタ209から記憶場所、レジスタ209内のレジスタからレジスタ209内の第2のレジスタに移動することができる。一実施例では、パックドデータは整数データを記憶するために使用されるレジスタとは異なるレジスタに格納される。この実施例では、移動演算によって整数レジスタ201からレジスタ209にデータを移動することができる。たとえば、プロセッサ109において、レジスタ209にパックドデータが格納され、整数レジスタ201に整数データが格納されている場合、移動命令を使用して整数レジスタ201からレジスタ209にデータを移動したり、その逆を行ったりすることができる。
一実施例では、移動のためにメモリ・アドレスを示すと、記憶場所(最下位バイトを示す記憶場所)にある8バイトのデータがレジスタ209内のレジスタにロードされるかまたはそのレジスタから格納される。レジスタ209内のレジスタが示された場合、そのレジスタの内容がレジスタ209内の第2のレジスタに移動されるかまたはそこからロードされる。整数レジスタ201が64ビット長であって、整数レジスタを指定した場合、そのレジスタ内の8バイトのデータがレジスタ209内のレジスタにロードされるかまたはそのレジスタから格納される。
一実施例では、整数は32ビットで表される。レジスタ209から整数レジスタ201への移動演算を行う場合、パックドデータの下位32ビットだけが指定された整数レジスタに移動される。一実施例では、上位32ビットはゼロにされる。同様に、整数レジスタ201からレジスタ209への移動を実行すると、レジスタ209内のレジスタの下位32ビットだけがロードされる。一実施例では、プロセッサ109はレジスタ209内のレジスタとメモリとの間の32ビットの移動演算をサポートする。他の実施例では、パックドデータの上位32ビットに対して32ビットのみの移動が行われる。
パック演算
本発明の一実施例では、SRC1 602レジスタにデータ(Source1)が入れられ、SRC2 603レジスタにデータ(Source2)が入れられ、DEST605レジスタには演算の結果データ(Result)が入れられる。すなわち、Source1の部分とSource2の部分が一緒にパックされて結果が生成される。
一実施例では、パック演算は、ソース・パックドワード(またはダブルワード)の下位バイト(またはワード)をResultのバイト(またはワード)にパックすることによって、パックドワード(またはダブルワード)がパックドバイト(またはワード)に変換する。一実施例では、パック演算によって、クワッド・パックドワードがパックドダブルワードに変換される。この演算は、任意選択により符号付きデータを使用して行うことができる。さらにこの演算は、任意選択により飽和を使用して行うことができる。
第7図に、パックドデータに対してパック演算を行う方法の一実施例を示す。この実施例は、第2図のプロセッサ109で実施することができる。
ステップ701で、プロセッサ109が受け取った制御信号207をデコーダ202がデコードする。したがって、デコーダ202は、適切なシフト演算の命令コードと、レジスタ209内のSRC1 602、SRC2 603、およびDEST605アドレスと、飽和/非飽和と、符号付き/無符号と、パックドデータ内のデータ要素の長さとをデコードする。前述のように、SRC1 602(またはSRC2 603)をDEST605として使用することができる。
ステップ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を介して飽和とSource1内およびSource2内のデータ要素のサイズも伝達する。任意選択で飽和を使用して、結果データ要素内のデータの値を最大化する。Source1またはSource2内のデータ要素の値が、Resultのデータ要素が表すことができる値の範囲より大きいかまたは小さい場合、それに対応する結果データ要素がその最高値または最低値に設定される。たとえば、Source1およびSource2のワード・データ要素内の符号付き値が0×80(またはダブルワードの場合は0×8000)よりも小さい場合、結果のバイト(またはワード)データ要素が0×80(またはダブルワードの場合は0×8000)にクランプされる。Source1およびSource2のワード・データ要素内の符号付き値が0×7F(またはダブルワードの場合は0×7FFF)よりも大きい場合は、結果のバイト(またはワード)データ要素が0×7F(または0×7FFF)にクランプされる。
ステップ710で、データ要素のサイズによって次にどのステップを実行するかが決まる。データ要素のサイズが16ビット(パックドワード502データ)の場合、機能ユニット203はステップ712を実行する。しかしパックドデータ内のデータ要素のサイズが32ビット(パックドダブルワード503データ)の場合、機能ユニット203はステップ714を実行する。
ソース・データ要素のサイズが16ビットであると仮定すると、ステップ712が実行される。ステップ712では、以下のように行う。Source1のビット7〜0はResultのビット7〜0である。Source1のビット23〜6はResultのビット15〜8である。Source1のビット39〜32はResultのビット23〜16である。Source1のビット63〜56はResultのビット31〜24である。Source2のビット7〜0はResultのビット39〜32である。Source2のビット23〜16はResultのビット47〜40である。Source2のビット39〜32はResultのビット55〜48である。Source2のビット63〜56はResultのビット31〜24である。飽和を設定した場合は、Resultデータ要素をクランプすべきかどうかを判断するために各ワードの上位ビットが検査される。
ソース・データ要素のサイズが32ビットであると仮定すると、ステップ714が実行される。ステップ714では、以下のように行われる。Source1のビット15〜0はResultのビット15〜0である。Source1のビット47〜32はResultのビット31〜16である。Source2のビット15〜0はResultのビット47〜32である。Source2のビット47〜32はResultのビット63〜48である。飽和を設定した場合は、Resultデータ要素をクランプすべきかどうかを判断するために各ダブルワードの上位ビットが検査される。
一実施例では、ステップ712のパック演算が同時に行われる。しかし、他の実施例では、このパック演算は順次に行われる。他の実施例では、このパック演算の一部が同時に行われ、一部は順次に行われる。これは、ステップ714のパック演算にも適用される。
ステップ720で、ResultがDEST605レジスタに格納される。
表2に、飽和を使用しないパック無符号ワード演算のレジスタ内表現を示す。最初の行のビットはSource1のパックドデータ表現である。2番目の行のビットはSource2のデータ表現である。3番目の行のビットはResultのパックドデータ表現である。各データ要素ビットの下の数字はデータ要素番号である。たとえば、Source1データ要素3は100000002である。
表3に、飽和を使用したパック符号ダブルワード演算のレジスタ内表現を示す。
パック回路
本発明の一実施例では、パック演算の効率的な実行を実現するために並列処理を使用する。第8a図および第8b図に、パックドデータに対するパック演算を行う回路の一実施例を示す。
第8a図および第8b図の回路は、演算制御回路800と、結果レジスタ852と、結果レジスタ853と、8個の16ビットから8ビットの飽和検査回路と、4個の32ビットから16ビットの飽和検査回路を備える。
演算制御回路800は、デコーダ202から情報を受け取ってパック演算を可能にする。演算制御回路800は飽和値を使用して各飽和検査回路の飽和検査を可能にする。ソース・パックドデータのサイズがワード・パックドデータ503の場合、演算制御回路800によって出力イネーブル831が設定される。これによって出力レジスタ852の出力がイネーブルにされる。ソース・パックドデータのサイズがダブルワード・パックドデータ504の場合、演算制御回路800によって出力イネーブル832が設定される。これによって、出力レジスタ853の出力がイネーブルにされる。
各飽和検査回路は飽和を選択的に検査することができる。飽和の検査を使用不能にした場合、各飽和検査回路はただ下位ビットを通過させて結果レジスタ内の対応する位置に入れるだけである。飽和の検査を使用可能にした場合、各飽和検査回路は上位ビットを検査して結果をクランプすべきかどうかを判断する。
飽和検査回路810ないし817は16ビットの入力と8ビットの出力を有する。8ビットの出力は入力の下位8ビットか、または任意選択によりクランプ値(0×80、0×7F、または0×FF)である。飽和検査回路810は、Source1のビット15ないし0を受け取り、結果レジスタ852に対するビット7ないし0を出力する。飽和検査回路811は、Source1のビット31ないし16を受け取り、結果レジスタ852に対するビット15ないし8を出力する。飽和検査回路812は、Source1のビット47ないし32を受け取り、結果レジスタ852に対するビット23ないし16を出力する。飽和検査回路813は、Source1のビット63ないし48を受け取り、結果レジスタ852に対するビット31ないし24を出力する。飽和検査回路814は、Source2のビット15ないし0を受け取り、結果レジスタ852に対するビット39ないし32を出力する。飽和検査回路815は、Source2のビット31ないし16を受け取り、結果レジスタ852に対するビット47ないし40を出力する。飽和検査回路816は、Source2のビット47ないし32を受け取り、結果レジスタ852に対するビット55ないし48を出力する。飽和検査回路817は、Source2のビット63ないし48を受け取り、結果レジスタ852に対するビット63ないし56を出力する。
飽和検査回路820ないし飽和検査回路823は、32ビットの入力と16ビットの出力を有する。16ビットの出力は、入力の下位16ビットか、または任意選択によりクランプ値(0×8000、0×7FFF、または0×FFFF)である。飽和検査回路820は、Source1のビット31ないしゼロを受け取り、結果レジスタ853に対するビット15ないし0を出力する。飽和検査回路812がSource1のビット63ないし32を受け取り、結果レジスタ853に対するビット31ないし16を出力する。飽和検査回路822は、Source2のビット31ないし0を受け取り、結果レジスタ853に対するビット47ないし32を出力する。飽和検査回路823は、Source2のビット63ないし32を受け取り、結果レジスタ853に対するビット63ないし48を出力する。
たとえば、表4に飽和を使用しない無符号パックドワードを示す。演算制御回路800は、結果レジスタ852が結果[63:0]860を出力することができるようにする。
しかし、飽和なしの無符号パックドダブルワード演算を行う場合、演算制御回路800は結果レジスタ853が結果[63:0]860を出力することができるようにする。表5にこの結果を示す。
アンパック演算
一実施例では、アンパック演算によって、2つのソース・パックドデータの下位パックドバイト、ワード、またはダブルワードをインタリーブして、結果のパックドバイト、ワード、またはダブルワードを生成する。
第9図に、パックドデータに対するアンパック演算を行う方法の一実施例を示す。この実施例は、第2図のプロセッサ109において実施することができる。
先にステップ701およびステップ702が実行される。ステップ903で、デコーダ202がアンパック演算を行うように機能ユニット203を使用可能にする。デコーダ202は内部205を介してSource1およびSource2内のデータ要素のサイズを伝達する。
ステップ910で、このデータ要素のサイズによって次にどのステップを実行するかが決まる。データ要素のサイズが8ビット(パックドバイト501データ)の場合、機能ユニット203はステップ712を実行する。しかし、パックドデータ内のデータ要素のサイズが16ビット(パックドワード502データ)の場合、機能ユニット203はステップ714を実行する。しかし、パックドデータ内のデータ要素のサイズが32ビット(パックドダブルワード503データ)の場合、機能ユニット203はステップ716を実行する。
ソース・データ要素のサイズが8ビットであると仮定すると、ステップ172が実行される。ステップ712では以下のように行われる。Source1のビット7〜0はResultのビット7〜0である。Source2のビット7〜0はResultのビット15〜8である。Source1のビット15〜8はResultのビット23〜16である。Source2のビット15〜8はResultのビット31〜24である。Source1のビット23〜16はResultのビット39〜22である。Source2のビット23〜16はResultのビット47〜40である。Source1のビット31〜24はResultのビット55〜48である。Source2のビット31〜24はResultのビット63〜56である。
ソース・データ要素のサイズが16ビットであると仮定すると、ステップ714が実行される。ステップ714では以下のように行われる。Source1のビット15〜0はResultのビット15〜0である。Source2のビット15〜0はResultのビット31〜16である。Source1のビット31〜16はResultのビット47〜32である。Source2のビット31〜16はResultのビット63〜48である。
ソース・データ要素のサイズが32ビットであると仮定すると、ステップ716が実行される。ステップ716では以下のように行われる。Source1のビット31〜0がResultのビット31〜0である。Source2のビット31〜0がResultのビット63〜32である。
一実施例では、ステップ712のアンパック演算が同時に行われる。しかし、他の実施例では、このアンパック演算は順次に行われる。他の実施例では、このアンパック演算の一部が同時に行われ、一部は順次に行われる。これは、ステップ714および716のアンパック演算にも適用される。
ステップ720で、ResultがDEST605レジスタに格納される。
表6に、アンパック・バイト演算のレジスタ内表現を示す。
表7に、アンパック・ワード演算のレジスタ内表現を示す。
表8に、アンパック・ダブルワード演算のレジスタ内表現を示す。
アンパック回路
本発明の一実施例では、アンパック演算の効率的な実行を実現するために並列処理を使用する。第10図に、パックドデータに対するアンパック演算を実行することができる回路の一実施例を示す。
第10図の回路は、演算制御回路800と結果レジスタ1052と結果レジスタ1053と結果レジスタ1054とを備える。
演算制御回路800は、デコーダ202からアンパック演算をイネーブルにする情報を受け取る。ソース・パックドデータのサイズがバイト・パックドデータ502の場合、演算制御回路800によって出力イネーブル1032が設定される。これによって、結果レジスタ1052の出力がイネーブルにされる。ソース・パックドデータのサイズがワード・パックドデータ503の場合、演算制御回路800によって出力イネーブル1033が設定される。これによって出力レジスタ1053の出力がイネーブルにされる。ソース・パックドデータのサイズがダブルワード・パックドデータ504の場合、演算制御回路800によって出力イネーブル1034が設定される。これによって、出力結果レジスタ1054の出力がイネーブルにされる。
結果レジスタ1052は以下の入力を有する。Source1のビット7〜0は結果レジスタ1052のビット7〜0である。Source2のビット7〜0は結果レジスタ1052のビット15〜8である。Source1のビット15〜8は結果レジスタ1052のビット23〜16である。Source2のビット15〜8は結果レジスタ1052のビット31〜24である。Source1のビット23〜16は結果レジスタ1052のビット39〜32である。Source2のビット23〜16は結果レジスタ1052のビット47〜40である。Source1のビット31〜24は結果レジスタ1052の55〜48である。Source2のビット31〜24は結果レジスタ1052のビット63〜56である。
結果レジスタ1053は以下の入力を有する。Source1のビット15〜0は結果レジスタ1053の15〜0である。Source2のビット15〜0は結果レジスタ1053の31〜16である。Source1のビット31〜16は結果レジスタ1053のビット47〜32である。Source2のビット31〜16は結果レジスタ853のビット63〜48である。
結果レジスタ1054は以下の入力を有する。Source1のビット31〜0は結果レジスタ1054のビット31〜0である。Source2のビット31〜0は結果レジスタ1054のビット63〜32である。
たとえば、表9ではアンパック・ワード演算が実行される。演算制御回路800は結果レジスタ1053が結果[63:0]860を出力することができるようにする。
しかし、アンパック・ダブルワード演算を行う場合、演算制御回路800は結果レジスタ1054が結果[63:0]860を出力することができるようにする。表10にその結果を示す。
したがって、移動演算、パック演算、およびアンパック演算によってマルチメディア・データ要素を操作することができる。従来技術のプロセッサでは、これらのタイプの操作を行うために、単一のパック移動演算、パック演算、またはアンパック演算を行うために複数の別々の演算を実行する必要がある。一実施例では、パックドデータ演算のためのデータ線はすべて関係のあるデータを伝送する。これによって、コンピュータ・システムのパフォーマンスが向上する。
Claims (25)
- 第1の演算コードと、少なくとも第1のデータ要素を含む第1の複数のデータ要素を有する第1のオペランドを示す第1のフィールドと、少なくとも第2のデータ要素を含む第2の複数のデータ要素を有する第2のオペランドを示す第2のフィールドとを含み、第1および第2の複数のデータ要素のデータ要素それぞれがNビット長の命令形式である第1の命令を受け取るステップと;
第1の複数のデータ要素各々から導出される長さがNビット未満の第1のマルチビット部分をデスティネーション・オペランドにパックし、第2の複数のデータ要素各々から導出される長さがNビット未満の第2のマルチビット部分をデスティネーション・オペランドにパックすることにより、前記第1の命令に応答して長さが少なくともNビットの第1のパックドデータを格納するステップと
を含むことを特徴とする方法。 - 前記第1の命令がパック命令であることを特徴とする請求項1に記載の方法。
- 第1のオペランドの第1のデータ要素セットに、デスティネーション・オペランドの第1のパックドデータを上書きするステップをさらに含むことを特徴とする請求項1または2に記載の方法。
- 第1の複数のデータ要素の1つまたは複数の下位データ要素に、第1の複数のデータ要素各々のパックされた第1のマルチビット部分を上書きするステップをさらに含むことを特徴とする請求項1から3のいずれかに記載の方法。
- 第1の複数のデータ要素の1つまたは複数の上位データ要素に、第2の複数のデータ要素各々のパックされた第2のマルチビット部分を上書きするステップをさらに含むことを特徴とする請求項1から4のいずれかに記載の方法。
- デスティネーション・オペランドが第1のフィールドによって示されることを特徴とする請求項1から5のいずれかに記載の方法。
- 第1のフィールドが前記命令形式のビット3〜5で構成されることを特徴とする請求項1から6のいずれかに記載の方法。
- 第2のフィールドが前記命令形式のビット0〜2を含むことを特徴とする請求項1から7のいずれかに記載の方法。
- 第1および第2のマルチビット部分が各々N/2ビット長であることを特徴とする請求項1から8のいずれかに記載の方法。
- 第1の複数のデータ要素各々から導出される第1のマルチビット部分がこの第1の複数のデータ要素のそれぞれのデータ要素の最下位ビットを少くとも含み、第2の複数のデータ要素各々から導出される第2のマルチビット部分がこの第2の複数のデータ要素のそれぞれのデータ要素の最下位ビットを少くとも含むことを特徴とする請求項1から9のいずれかに記載の方法。
- 符号付きの飽和クランピング(clamping)を使用して第1および第2のマルチビット部分各々をパックすることを特徴とする請求項1から9のいずれかに記載の方法。
- 無符号の飽和クランピングを使用して第1および第2のマルチビット部分各々をパックすることを特徴とする請求項1から9のいずれかに記載の方法。
- 符号付きのデータ要素により第1および第2のマルチビット部分のパックを行うことを特徴とする請求項1から12のいずれかに記載の方法。
- 第2の演算コードと、第3のデータ要素を含む第3の複数のデータ要素を有する第3のオペランドを示す第1のフィールドと、第4のデータ要素を含む第4の複数のデータ要素を有する第4のオペランドを示す第2のフィールドとを含み、第3および第4の複数のデータ要素のデータ要素それぞれがM/2ビット長である前記命令形式である第2の命令を受け取るステップと;
前記第2の命令に応答して、第3および第4のデータ要素を含む、結果として得られるMビット長の第1のデータ要素を格納するステップと
をさらに含むことを特徴とする請求項1から13のいずれかに記載の方法。 - 第1の演算コードと、少なくとも第1の データ要素を含む第1の複数のデータ要素を有する第1 のオペランドを示す第1のフィールドと、少なくとも第 2のデータ要素を含む第2の複数のデータ要素を有する 第2のオペランドを示す第2のフィールドとを含み、第 1および第2の複数のデータ要素のデータ要素それぞれ がNビット長の命令形式である第1の命令の前記第1の複数のデータ要素を格納する第1の記憶場所と;
前記第1の命令の第2の複数のデータ要素を格納する第2の記憶場所と;
第1および第2の記憶場所にアクセスするデコーダと;
第1の複数のデータ要素各々から導出される長さがNビ ット未満の第1のマルチビット部分をデスティネーショ ン・オペランドにパックし、第2の複数のデータ要素各 々から導出される長さがNビット未満の第2のマルチビ ット部分をデスティネーション・オペランドにパックす ることにより、前記第1の命令に応答して長さが少なく ともNビットの第1のパックドデータを格納する第3の記憶場所と;
前記第1の命令を含む少なくとも1つの命令に少なくとも部分的に応答して、前記デコーダと共に所望の演算を実行する、デコーダと動作的に結合された機能ユニットと
を含むことを特徴とするプロセッサ。 - 第1のデータ要素を含む第1の複数のデータ要素を有する第1のオペランドを示し、第2のデータ要素を含む第2の複数のデータ要素を有する第2のオペランドを示し、第1および第2の複数のデータ要素のデータ要素それぞれがNビット長である第1の命令を受け取るデコーダと;
デコーダが第1の命令をデコードするのに応答して、第1および第2の複数のデータ要素各々から導出された長さがNビット未満のマルチビット部分を含む、少なくとも2Nビット長である第1のパックドデータを格納する、デコーダと動作的に結合された機能ユニットと
を含むことを特徴とするプロセッサ。 - 第1の命令は3バイト以上を含む形式であり、3バイト以上のバイトの第3バイトにより、第1の3ビットのソース・デスティネーション・レジスタ・アドレス、および第2の3ビットのソース・レジスタ・アドレスが可能になることを特徴とする請求項16に記載のプロセッサ。
- 第1のオペランドが第1の3ビットのソース・デスティネーション・レジスタ・アドレスに対応することを特徴とする請求項17に記載のプロセッサ。
- 第2のオペランドが、メモリ内のアドレス指定可能な場所に対応することを特徴とする請求項16 から18のいずれかに記載のプロセッサ。
- 第2のオペランドが第2の3ビットのソース・レジスタ・アドレスに対応することを特徴とする請求項17または18に記載のプロセッサ。
- 機能ユニットが、第1の3ビットのソース・デスティネーション・レジスタ・アドレスに対応するデスティネーションに第1のパックドデータを格納することを特徴とする請求項17から20のいずれかに記載のプロセッサ。
- 第1の命令が、第1のオペランドを示す第1のフィールド、第2のオペランドを示す第2のフィールド、および第1のパックドデータを格納するデスティネーションを示す第3のフィールドを含む形式を有することを特徴とする請求項16に記載のプロセッサ。
- 第1の命令を保持するメモリと;
ソフトウェアが第1の命令をメモリに供給し、命令デコーダがメモリから第1の命令を受け取る、ソフトウェアを保持する記憶装置と
をさらに含み、
前記第1の複数のデータ要素が第3のデータ要素を含み、前記第2の複数のデータ要素が第4のデータ要素を含み;
前記第1のパックドデータが、第1のデータ要素から導出される第1のマルチビット部分A、および第3のデータ要素から導出される第2のマルチビット部分Bを含む複数の下位マルチビット部分と、第2のデータ要素から導出される第3のマルチビット部分C、および第4のデータ要素から導出される第4のマルチビット部分Dを含む複数の上位マルチビット部分とを含むことを特徴とする請求項16から22のいずれかに記載のプロセッサ。 - デジタル・オーディオ信号を処理するように構成されたシステムであって、
パックされたM個のNビット・データ要素の第1のセットからなる第1のM×Nビット・データと、パックされたM個のNビット・データ要素の第2のセットからなる第2のM×Nビット・データとを格納するメモリと;
第1および第2のM×Nビット・データにアクセスし、命令に応答して2M個のパックされたN/2ビットの結果の第3のセットを生成する、メモリと結合されたプロセッサであって、前記命令は、第1のM×Nビット・データに対応する第1のソースと、第2のM×Nビット・データに対応する第2のソースとを識別するように動作可能な第1の形式であり、パックされた2M個のN/2ビットの結果の第3のセットは、第1および第2のM個のパックされたNビット・データ要素からパックされた、任意選択で飽和した2M個のN/2ビット要素に対応するプロセッサと;
プロセッサおよびメモリとのデータの送受信を行う、プロセッサに結合されたバスと;
オーディオ・デジタル化装置、音声録音装置、音声再生装置、マイクロフォン、デジタル/アナログ変換器、およびスピーカからなる群から選択されるオーディオ装置を含む1つまたは複数の装置とバスを結合し、バスにデータを提供する、またはバスからデータを受け取るインタフェースと
を含むことを特徴とするシステム。 - 前記プロセッサが、第1のM×Nビット・データに2M個のパックされたN/2ビットの結果の第3のセットを上書きすることを特徴とする請求項24に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US34904794A | 1994-12-02 | 1994-12-02 | |
US08/349,047 | 1994-12-02 | ||
PCT/US1995/015713 WO1996017291A1 (en) | 1994-12-02 | 1995-12-01 | Microprocessor with packing operation of composite operands |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10512070A JPH10512070A (ja) | 1998-11-17 |
JP3615222B2 true JP3615222B2 (ja) | 2005-02-02 |
Family
ID=23370692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP51912596A Expired - Lifetime JP3615222B2 (ja) | 1994-12-02 | 1995-12-01 | 複合オペランドのパック演算機能を有するマイクロプロセッサ |
Country Status (8)
Country | Link |
---|---|
US (21) | US5802336A (ja) |
EP (2) | EP1265132A3 (ja) |
JP (1) | JP3615222B2 (ja) |
KR (1) | KR100329338B1 (ja) |
CN (5) | CN100412786C (ja) |
AU (1) | AU4464596A (ja) |
BR (1) | BR9509845A (ja) |
WO (1) | WO1996017291A1 (ja) |
Families Citing this family (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5539911A (en) | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
JP3730252B2 (ja) * | 1992-03-31 | 2005-12-21 | トランスメタ コーポレイション | レジスタ名称変更方法及び名称変更システム |
JP3637920B2 (ja) * | 1992-05-01 | 2005-04-13 | セイコーエプソン株式会社 | スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法 |
US5628021A (en) * | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
DE69330889T2 (de) * | 1992-12-31 | 2002-03-28 | Seiko Epson Corp., Tokio/Tokyo | System und Verfahren zur Änderung der Namen von Registern |
JP3615222B2 (ja) * | 1994-12-02 | 2005-02-02 | インテル・コーポレーション | 複合オペランドのパック演算機能を有するマイクロプロセッサ |
US6813699B1 (en) | 1995-06-02 | 2004-11-02 | Transmeta Corporation | Speculative address translation for processor using segmentation and optional paging |
US6295599B1 (en) * | 1995-08-16 | 2001-09-25 | Microunity Systems Engineering | System and method for providing a wide operand architecture |
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
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 |
US7483935B2 (en) * | 1995-08-16 | 2009-01-27 | Microunity Systems Engineering, Inc. | System and method to implement a matrix multiply unit of a broadband processor |
US5742840A (en) | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US6385634B1 (en) | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US7395298B2 (en) | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
US6260137B1 (en) * | 1997-09-12 | 2001-07-10 | Siemens Aktiengesellschaft | Data processing unit with digital signal processing capabilities |
US6263420B1 (en) | 1997-09-17 | 2001-07-17 | Sony Corporation | Digital signal processor particularly suited for decoding digital audio |
US6138274A (en) * | 1998-01-23 | 2000-10-24 | Lucent Technologies, Inc. | Method and apparatus for updating an online computer program |
US6122725A (en) * | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
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 |
US6041404A (en) | 1998-03-31 | 2000-03-21 | Intel Corporation | Dual function system and method for shuffling packed data elements |
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 |
US6230253B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
US6535218B1 (en) * | 1998-05-21 | 2003-03-18 | Mitsubishi Electric & Electronics Usa, Inc. | Frame buffer memory for graphic processing |
US6504550B1 (en) * | 1998-05-21 | 2003-01-07 | Mitsubishi Electric & Electronics Usa, Inc. | System for graphics processing employing semiconductor device |
US7932911B2 (en) * | 1998-08-24 | 2011-04-26 | Microunity Systems Engineering, Inc. | Processor for executing switch and translate instructions requiring wide operands |
ATE467171T1 (de) * | 1998-08-24 | 2010-05-15 | Microunity Systems Eng | System mit breiter operandenarchitektur und verfahren |
US7242414B1 (en) * | 1999-07-30 | 2007-07-10 | Mips Technologies, Inc. | Processor having a compare extension of an instruction set architecture |
US7346643B1 (en) * | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
US6446195B1 (en) * | 2000-01-31 | 2002-09-03 | Intel Corporation | Dyadic operations instruction processor with configurable functional blocks |
US6829696B1 (en) * | 1999-12-30 | 2004-12-07 | Texas Instruments Incorporated | Data processing system with register store/load utilizing data packing/unpacking |
US6638239B1 (en) * | 2000-04-14 | 2003-10-28 | Glaukos Corporation | Apparatus and method for treating glaucoma |
GB0024312D0 (en) | 2000-10-04 | 2000-11-15 | Advanced Risc Mach Ltd | Single instruction multiple data processing |
JP3779540B2 (ja) | 2000-11-08 | 2006-05-31 | 株式会社ルネサステクノロジ | 複数レジスタ指定が可能なsimd演算方式 |
FR2818145B1 (fr) * | 2000-12-18 | 2003-11-28 | Oreal | Compositions cosmetiques antisolaires a base d'un melange synergetique de filtres et utilisations |
US7913261B2 (en) * | 2001-05-02 | 2011-03-22 | nCipher Corporation, Ltd. | Application-specific information-processing method, system, and apparatus |
AU2002339867A1 (en) * | 2001-09-04 | 2003-03-18 | Microunity Systems Engineering, Inc. | System and method for performing multiplication |
US7430578B2 (en) | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
US20030188135A1 (en) * | 2002-03-28 | 2003-10-02 | Intel Corporation | Addressing modes and/or instructions and/or operating modes for on-the-fly, precision adjustment of packed data |
US7028171B2 (en) * | 2002-03-28 | 2006-04-11 | Intel Corporation | Multi-way select instructions using accumulated condition codes |
US6986023B2 (en) * | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
AU2003256870A1 (en) * | 2002-08-09 | 2004-02-25 | Intel Corporation | Multimedia coprocessor control mechanism including alignment or broadcast instructions |
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 |
US7899855B2 (en) * | 2003-09-08 | 2011-03-01 | Intel Corporation | Method, apparatus and instructions for parallel data conversions |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
US7457938B2 (en) * | 2005-09-30 | 2008-11-25 | Intel Corporation | Staggered execution stack for vector processing |
WO2007085914A1 (en) * | 2006-01-27 | 2007-08-02 | Freescale Semiconductor, Inc. | Device and method for adding and subtracting two variables and a constant |
US7958181B2 (en) | 2006-09-21 | 2011-06-07 | Intel Corporation | Method and apparatus for performing logical compare operations |
US9069547B2 (en) | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
US8341165B2 (en) | 2007-12-03 | 2012-12-25 | Intel Corporation | Method and apparatus for searching extensible markup language (XML) data |
US8502819B1 (en) | 2007-12-17 | 2013-08-06 | Nvidia Corporation | System and method for performing ray tracing node traversal in image rendering |
US8289324B1 (en) | 2007-12-17 | 2012-10-16 | Nvidia Corporation | System, method, and computer program product for spatial hierarchy traversal |
US8780128B2 (en) * | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Contiguously packed data |
US8078836B2 (en) | 2007-12-30 | 2011-12-13 | Intel Corporation | Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits |
US9086872B2 (en) * | 2009-06-30 | 2015-07-21 | Intel Corporation | Unpacking packed data in multiple lanes |
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 |
US8564589B1 (en) | 2010-05-17 | 2013-10-22 | Nvidia Corporation | System and method for accelerated ray-box intersection testing |
US8555036B1 (en) | 2010-05-17 | 2013-10-08 | Nvidia Corporation | System and method for performing predicated selection of an output register |
US20120254589A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
JP5853177B2 (ja) * | 2011-04-08 | 2016-02-09 | パナソニックIpマネジメント株式会社 | データ処理装置、及びデータ処理方法 |
CN106406818B (zh) | 2011-12-22 | 2020-06-16 | 英特尔公司 | 打包数据操作掩码串接处理器、方法、系统及指令 |
CN104126170B (zh) * | 2011-12-22 | 2018-05-18 | 英特尔公司 | 打包数据操作掩码寄存器算术组合处理器、方法、系统及指令 |
US20140082333A1 (en) * | 2011-12-22 | 2014-03-20 | Elmoustapha Ould-Ahmed-Vall | Systems, apparatuses, and methods for performing an absolute difference calculation between corresponding packed data elements of two vector registers |
CN104025023A (zh) * | 2011-12-23 | 2014-09-03 | 英特尔公司 | 用于执行使用掩码的向量打包一元解码的系统、装置和方法 |
US8849885B2 (en) * | 2012-06-07 | 2014-09-30 | Via Technologies, Inc. | Saturation detector |
US9436474B2 (en) * | 2012-07-27 | 2016-09-06 | Microsoft Technology Licensing, Llc | Lock free streaming of executable code data |
US9477467B2 (en) | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US10402198B2 (en) | 2013-06-18 | 2019-09-03 | Nxp Usa, Inc. | Signal processing device and method of performing a pack-insert operation |
US10228941B2 (en) * | 2013-06-28 | 2019-03-12 | Intel Corporation | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
US9785565B2 (en) | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
EP3001306A1 (en) * | 2014-09-25 | 2016-03-30 | Intel Corporation | Bit group interleave processors, methods, systems, and instructions |
US10489158B2 (en) | 2014-09-26 | 2019-11-26 | Intel Corporation | Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores |
US9772849B2 (en) * | 2014-11-14 | 2017-09-26 | Intel Corporation | Four-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US9772848B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Three-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US9772850B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Morton coordinate adjustment processors, methods, systems, and instructions |
US10387150B2 (en) * | 2015-06-24 | 2019-08-20 | International Business Machines Corporation | Instructions to count contiguous register elements having a specific value in a selected location |
US20170177351A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Even and Odd Vector Get Operations |
US11204764B2 (en) * | 2016-03-31 | 2021-12-21 | Intel Corporation | Processors, methods, systems, and instructions to Partition a source packed data into lanes |
US10891131B2 (en) * | 2016-09-22 | 2021-01-12 | Intel Corporation | Processors, methods, systems, and instructions to consolidate data elements and generate index updates |
US20180173527A1 (en) * | 2016-12-15 | 2018-06-21 | Optimum Semiconductor Technologies, Inc. | Floating point instruction format with embedded rounding rule |
CN111381874B (zh) * | 2018-12-28 | 2022-12-02 | 上海寒武纪信息科技有限公司 | Compress指令译码方法、数据处理方法、译码器及数据处理装置 |
US20220197642A1 (en) * | 2020-12-23 | 2022-06-23 | Intel Corporation | Processor instructions for data compression and decompression |
Family Cites Families (94)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3541516A (en) * | 1965-06-30 | 1970-11-17 | Ibm | Vector arithmetic multiprocessor computing system |
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 |
US4139899A (en) * | 1976-10-18 | 1979-02-13 | Burroughs Corporation | Shift network having a mask generator and a rotator |
US4141005A (en) | 1976-11-11 | 1979-02-20 | International Business Machines Corporation | Data format converting apparatus for use in a digital data processor |
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 |
JPS5537648A (en) * | 1978-09-07 | 1980-03-15 | Matsushita Electric Ind Co Ltd | Instruction decoder circuit |
US4229801A (en) | 1978-12-11 | 1980-10-21 | Data General Corporation | Floating point processor having concurrent exponent/mantissa operation |
US4481580A (en) | 1979-11-19 | 1984-11-06 | Sperry Corporation | Distributed data transfer control for parallel processor architectures |
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 |
US4595911A (en) * | 1983-07-14 | 1986-06-17 | Sperry Corporation | Programmable data reformat system |
US5265204A (en) * | 1984-10-05 | 1993-11-23 | Hitachi, Ltd. | Method and apparatus for bit operational process |
US4707800A (en) * | 1985-03-04 | 1987-11-17 | Raytheon Company | Adder/substractor for variable length numbers |
JPS6297060A (ja) * | 1985-10-23 | 1987-05-06 | Mitsubishi Electric Corp | デイジタルシグナルプロセツサ |
JPH0827716B2 (ja) * | 1985-10-25 | 1996-03-21 | 株式会社日立製作所 | データ処理装置及びデータ処理方法 |
US4760525A (en) * | 1986-06-10 | 1988-07-26 | The United States Of America As Represented By The Secretary Of The Air Force | Complex arithmetic vector processor for performing control function, scalar operation, and set-up of vector signal processing instruction |
US5193159A (en) * | 1986-09-24 | 1993-03-09 | Hitachi, Ltd. | Microprocessor system |
JP3070744B2 (ja) * | 1987-04-10 | 2000-07-31 | 株式会社日立製作所 | ベクトル処理装置 |
US4992938A (en) | 1987-07-01 | 1991-02-12 | International Business Machines Corporation | Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers |
JP2613223B2 (ja) * | 1987-09-10 | 1997-05-21 | 株式会社日立製作所 | 演算装置 |
US4868748A (en) | 1987-11-25 | 1989-09-19 | General Electric Company | Rapid processing of three-dimensional graphical objects from tomographic data |
US4989168A (en) * | 1987-11-30 | 1991-01-29 | Fujitsu Limited | Multiplying unit in a computer system, capable of population counting |
US5008812A (en) | 1988-03-18 | 1991-04-16 | Digital Equipment Corporation | Context switching method and apparatus for use in a vector processing system |
US4903228A (en) | 1988-11-09 | 1990-02-20 | International Business Machines Corporation | Single cycle merge/logic unit |
US5241635A (en) | 1988-11-18 | 1993-08-31 | Massachusetts Institute Of Technology | Tagged token data processing system with operand matching in activation frames |
KR920007505B1 (ko) * | 1989-02-02 | 1992-09-04 | 정호선 | 신경회로망을 이용한 곱셈기 |
US5081698A (en) | 1989-02-14 | 1992-01-14 | Intel Corporation | Method and apparatus for graphics display data manipulation |
US5127098A (en) | 1989-04-12 | 1992-06-30 | Sun Microsystems, Inc. | Method and apparatus for the context switching of devices |
US5001662A (en) * | 1989-04-28 | 1991-03-19 | Apple Computer, Inc. | Method and apparatus for multi-gauge computation |
JPH03139726A (ja) | 1989-10-26 | 1991-06-13 | Hitachi Ltd | 命令読出し制御方式 |
US5212777A (en) | 1989-11-17 | 1993-05-18 | Texas Instruments Incorporated | Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation |
US5276891A (en) * | 1990-01-11 | 1994-01-04 | Bull Hn Information Systems Inc. | Alignment of sign, data, edit byte operand results for storage in memory |
US5168571A (en) * | 1990-01-24 | 1992-12-01 | International Business Machines Corporation | System for aligning bytes of variable multi-bytes length operand based on alu byte length and a number of unprocessed byte data |
WO1991011765A1 (en) | 1990-01-29 | 1991-08-08 | Teraplex, Inc. | Architecture for minimal instruction set computing system |
CA2045773A1 (en) * | 1990-06-29 | 1991-12-30 | Compaq Computer Corporation | Byte-compare operation for high-performance processor |
WO1992008188A1 (en) | 1990-11-02 | 1992-05-14 | Seiko Epson Corporation | Semiconductor device |
US5268854A (en) | 1990-11-13 | 1993-12-07 | Kabushiki Kaisha Toshiba | Microprocessor with a function for three-dimensional graphic processing |
JP2601960B2 (ja) * | 1990-11-15 | 1997-04-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理方法及びその装置 |
EP0485776A3 (en) | 1990-11-15 | 1993-07-07 | Motorola Inc. | A method for executing graphics pixel packing instructions in a data processor |
US5268995A (en) * | 1990-11-21 | 1993-12-07 | Motorola, Inc. | Method for executing graphics Z-compare and pixel merge instructions in a data processor |
US5680161A (en) * | 1991-04-03 | 1997-10-21 | Radius Inc. | Method and apparatus for high speed graphics data compression |
US5187679A (en) * | 1991-06-05 | 1993-02-16 | International Business Machines Corporation | Generalized 7/3 counters |
US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5168751A (en) * | 1991-08-01 | 1992-12-08 | Raymond Hwang | Digital tire pressure gauge |
US5239399A (en) | 1991-08-22 | 1993-08-24 | Radiant Technologies | Electrical-optical interface device |
US5530835A (en) | 1991-09-18 | 1996-06-25 | Ncr Corporation | Computer memory data merging technique for computers with write-back caches |
US5423010A (en) * | 1992-01-24 | 1995-06-06 | C-Cube Microsystems | Structure and method for packing and unpacking a stream of N-bit data to and from a stream of N-bit data words |
US5657253A (en) | 1992-05-15 | 1997-08-12 | Intel Corporation | Apparatus for monitoring the performance of a microprocessor |
KR950009687B1 (ko) * | 1992-06-30 | 1995-08-26 | 삼성항공산업주식회사 | 프로그램어블 로직 콘트롤러용 고속 래더명령 처리장치 |
US5522051A (en) | 1992-07-29 | 1996-05-28 | Intel Corporation | Method and apparatus for stack manipulation in a pipelined processor |
US5426783A (en) * | 1992-11-02 | 1995-06-20 | Amdahl Corporation | System for processing eight bytes or less by the move, pack and unpack instruction of the ESA/390 instruction set |
US5519841A (en) | 1992-11-12 | 1996-05-21 | Digital Equipment Corporation | Multi instruction register mapper |
US5408670A (en) * | 1992-12-18 | 1995-04-18 | Xerox Corporation | Performing arithmetic in parallel on composite operands with packed multi-bit components |
KR0122528B1 (ko) | 1993-01-08 | 1997-11-20 | 윌리엄 티.엘리스 | 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템 |
US5467473A (en) | 1993-01-08 | 1995-11-14 | International Business Machines Corporation | Out of order instruction load and store comparison |
US5465374A (en) * | 1993-01-12 | 1995-11-07 | International Business Machines Corporation | Processor for processing data string by byte-by-byte |
US5717947A (en) | 1993-03-31 | 1998-02-10 | Motorola, Inc. | Data processing system and method thereof |
JP3203401B2 (ja) * | 1993-05-21 | 2001-08-27 | 三菱電機株式会社 | データ処理装置 |
US5535397A (en) | 1993-06-30 | 1996-07-09 | Intel Corporation | Method and apparatus for providing a context switch in response to an interrupt in a computer process |
US5625374A (en) * | 1993-09-07 | 1997-04-29 | Apple Computer, Inc. | Method for parallel interpolation of images |
US5499352A (en) | 1993-09-30 | 1996-03-12 | Intel Corporation | Floating point register alias table FXCH and retirement floating point register array |
EP0651321B1 (en) | 1993-10-29 | 2001-11-14 | Advanced Micro Devices, Inc. | Superscalar microprocessors |
US5390135A (en) * | 1993-11-29 | 1995-02-14 | Hewlett-Packard | Parallel shift and add circuit and method |
US5590350A (en) | 1993-11-30 | 1996-12-31 | Texas Instruments Incorporated | Three input arithmetic logic unit with mask generator |
US5499376A (en) * | 1993-12-06 | 1996-03-12 | Cpu Technology, Inc. | High speed mask and logical combination operations for parallel processor units |
US5487159A (en) * | 1993-12-23 | 1996-01-23 | Unisys Corporation | System for processing shift, mask, and merge operations in one instruction |
US5541865A (en) | 1993-12-30 | 1996-07-30 | Intel Corporation | Method and apparatus for performing a population count operation |
US5546554A (en) | 1994-02-02 | 1996-08-13 | Sun Microsystems, Inc. | Apparatus for dynamic register management in a floating point unit |
US5781457A (en) | 1994-03-08 | 1998-07-14 | Exponential Technology, Inc. | Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU |
US5734874A (en) * | 1994-04-29 | 1998-03-31 | Sun Microsystems, Inc. | Central processing unit with integrated graphics functions |
US5649225A (en) | 1994-06-01 | 1997-07-15 | Advanced Micro Devices, Inc. | Resynchronization of a superscalar processor |
US5696955A (en) | 1994-06-01 | 1997-12-09 | Advanced Micro Devices, Inc. | Floating point stack and exchange instruction |
US5594437A (en) | 1994-08-01 | 1997-01-14 | Motorola, Inc. | Circuit and method of unpacking a serial bitstream |
US5481719A (en) | 1994-09-09 | 1996-01-02 | International Business Machines Corporation | Exception handling method and apparatus for a microkernel data processing system |
US5507000A (en) | 1994-09-26 | 1996-04-09 | Bull Hn Information Systems Inc. | Sharing of register stack by two execution units in a central processor |
EP1302848B1 (en) | 1994-12-01 | 2006-11-02 | Intel Corporation | A microprocessor having a multiply operation |
US5819101A (en) | 1994-12-02 | 1998-10-06 | Intel Corporation | Method for packing a plurality of packed data elements in response to a pack instruction |
JP3615222B2 (ja) * | 1994-12-02 | 2005-02-02 | インテル・コーポレーション | 複合オペランドのパック演算機能を有するマイクロプロセッサ |
US5537606A (en) | 1995-01-31 | 1996-07-16 | International Business Machines Corporation | Scalar pipeline replication for parallel vector element processing |
US5634118A (en) | 1995-04-10 | 1997-05-27 | Exponential Technology, Inc. | Splitting a floating-point stack-exchange instruction for merging into surrounding instructions by operand translation |
US5760792A (en) | 1995-05-01 | 1998-06-02 | Intergraph Corporation | Fifo logical addresses for control and error recovery |
US5752001A (en) | 1995-06-01 | 1998-05-12 | Intel Corporation | Method and apparatus employing Viterbi scoring using SIMD instructions for data recognition |
US5721892A (en) | 1995-08-31 | 1998-02-24 | Intel Corporation | Method and apparatus for performing multiply-subtract operations on packed data |
US5835748A (en) | 1995-12-19 | 1998-11-10 | Intel Corporation | Method for executing different sets of instructions that cause a processor to perform different data type operations on different physical registers files that logically appear to software as a single aliased register file |
US5852726A (en) | 1995-12-19 | 1998-12-22 | Intel Corporation | Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner |
US5940859A (en) | 1995-12-19 | 1999-08-17 | Intel Corporation | Emptying packed data state during execution of packed data instructions |
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 |
US5857096A (en) | 1995-12-19 | 1999-01-05 | Intel Corporation | Microarchitecture for implementing an instruction to clear the tags of a stack reference register file |
US5862067A (en) * | 1995-12-29 | 1999-01-19 | Intel Corporation | Method and apparatus for providing high numerical accuracy with packed multiply-add or multiply-subtract operations |
US5687336A (en) | 1996-01-11 | 1997-11-11 | Exponential Technology, Inc. | Stack push/pop tracking and pairing in a pipelined processor |
US5835782A (en) * | 1996-03-04 | 1998-11-10 | Intel Corporation | Packed/add and packed subtract operations |
US6115812A (en) | 1998-04-01 | 2000-09-05 | Intel Corporation | Method and apparatus for efficient vertical SIMD computations |
-
1995
- 1995-12-01 JP JP51912596A patent/JP3615222B2/ja not_active Expired - Lifetime
- 1995-12-01 CN CNB02126161XA patent/CN100412786C/zh not_active Expired - Lifetime
- 1995-12-01 CN CN95197430A patent/CN1094610C/zh not_active Expired - Lifetime
- 1995-12-01 CN CN2007101657203A patent/CN101211255B/zh not_active Expired - Lifetime
- 1995-12-01 KR KR1019970703682A patent/KR100329338B1/ko not_active IP Right Cessation
- 1995-12-01 CN CNB021261601A patent/CN1326033C/zh not_active Expired - Lifetime
- 1995-12-01 EP EP20020078326 patent/EP1265132A3/en not_active Withdrawn
- 1995-12-01 BR BR9509845A patent/BR9509845A/pt not_active IP Right Cessation
- 1995-12-01 CN CN201210161092.2A patent/CN102841776B/zh not_active Expired - Lifetime
- 1995-12-01 AU AU44645/96A patent/AU4464596A/en not_active Abandoned
- 1995-12-01 WO PCT/US1995/015713 patent/WO1996017291A1/en active IP Right Grant
- 1995-12-01 EP EP95943362A patent/EP0795153A4/en not_active Withdrawn
-
1997
- 1997-01-27 US US08/791,003 patent/US5802336A/en not_active Expired - Lifetime
- 1997-02-13 US US08/799,468 patent/US5881275A/en not_active Expired - Lifetime
-
1999
- 1999-03-22 US US08/974,435 patent/US6119216A/en not_active Expired - Lifetime
-
2000
- 2000-09-08 US US09/657,448 patent/US6516406B1/en not_active Expired - Lifetime
-
2002
- 2002-06-27 US US10/184,197 patent/US20030115441A1/en not_active Abandoned
- 2002-06-27 US US10/185,896 patent/US8601246B2/en not_active Expired - Fee Related
-
2006
- 2006-06-12 US US11/451,906 patent/US7966482B2/en not_active Expired - Fee Related
-
2010
- 2010-12-22 US US12/975,807 patent/US8521994B2/en not_active Expired - Fee Related
-
2011
- 2011-05-16 US US13/108,723 patent/US8190867B2/en not_active Expired - Fee Related
-
2012
- 2012-04-11 US US13/444,090 patent/US8495346B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,837 patent/US8793475B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,849 patent/US8838946B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,839 patent/US9182983B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,831 patent/US8639914B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,848 patent/US9015453B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,842 patent/US9116687B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,845 patent/US9361100B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,832 patent/US9141387B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,835 patent/US9223572B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,841 patent/US20130124830A1/en not_active Abandoned
- 2012-12-29 US US13/730,846 patent/US9389858B2/en not_active Expired - Fee Related
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3615222B2 (ja) | 複合オペランドのパック演算機能を有するマイクロプロセッサ | |
JP3924307B2 (ja) | 算術演算装置及び算術演算方法 | |
US5819101A (en) | Method for packing a plurality of packed data elements in response to a pack instruction | |
JPH11500547A (ja) | 乗算を有するマイクロプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040525 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040820 |
|
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: 20041005 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041029 |
|
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: 20081112 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091112 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091112 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101112 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111112 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111112 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121112 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121112 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131112 Year of fee payment: 9 |
|
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 |