JPH10512069A - パックされたデータのシフト演算を行うプロセッサ - Google Patents

パックされたデータのシフト演算を行うプロセッサ

Info

Publication number
JPH10512069A
JPH10512069A JP8519115A JP51911596A JPH10512069A JP H10512069 A JPH10512069 A JP H10512069A JP 8519115 A JP8519115 A JP 8519115A JP 51911596 A JP51911596 A JP 51911596A JP H10512069 A JPH10512069 A JP H10512069A
Authority
JP
Japan
Prior art keywords
data
packed
register
shift
processor
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.)
Withdrawn
Application number
JP8519115A
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 JPH10512069A publication Critical patent/JPH10512069A/ja
Withdrawn 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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Abstract

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

Description

【発明の詳細な説明】 シフト演算機能を有する新規なプロセッサ 発明の背景 1.発明の分野 特に、本発明は、単一の制御信号を使用して複数のデータ要素を操作する算術 演算(オペレーション)を行う装置および方法に関する。本発明は、パックされ たデータ・タイプに対するシフト演算の実行を可能にする。 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の 場所に格納された値によってシフトする回路である。この回路はさらに、対応す るパックされた結果データを第3の場所に伝達する。 本説明および図には多くの詳細が含まれるが、本発明は請求の範囲によって定 義される。本発明には、それらの請求の範囲に記載されている限定だけが適用さ れる。 図面の簡単な説明 本発明を、図面に限定的なものではなく例として図示する。同様の参照符号は 同様の要素を示す。 第1図は、本発明の方法および装置を使用するコンピュータ・システムの実施 形態を示す図である。 第2図は、本発明のプロセッサの実施形態を示す図である。 第3図は、プロセッサがレジスタ・ファイル内のデータを操作するために使用 する一般的なステップを示す流れ図である。 第4a図は、記憶データ・タイプを示す図である。 第4b図、第4c図、および第4d図は、レジスタ内整数データ表現を示す図 である。 第5a図は、パックされたデータ・タイプを示す図である。 第5b図、第5c図、および第5d図は、レジスタ内パックされたデータ表現 を示す図である。 第6a図は、パックされたデータの使用を示す、コンピュータ・システムで使 用される制御信号形式の図である。 第6b図は、パックされたデータの使用を示す、コンピュータ・システムで使 用可能な第2の制御信号形式の図である。 第7図は、パックされたデータに対してシフト演算を行うときにプロセッサが 従う方法の一実施形態を示す図である。 第8図は、パックされたデータの個々のバイトを処理することができる回路を 示す図である。 好ましい実施形態の説明 概要 複数のデータ要素に対して作用するシフト演算を有するプロセッサについて説 明する。以下の説明では、本発明を十分に理解することができるように、回路な どの多くの特定の詳細を記載する。他の場合には、本発明が無用に不明瞭になら ないように、周知の構造および技法については詳細に示さない。 定義 本発明の実施態様の説明を理解する基礎となるように、以下のように定義を示 す。 ビットXないしビットY:二進数のサブフィールドを規定する。たとえば、( 基数2で示した)バイト001110102のビット6ないしビット0は、11 10102のサブフィールドを表す。二進数の後の「2」は基数2を示す。した がって、10002は810に等しく、F16は1510に等しい。 Rx: レジスタである。レジスタは、データの記憶と供給を行うことができ る任意の素子である。レジスタの他の機能については後述する。レジスタはプロ セッサのパッケージの一部であるとは限らない。 DEST:データ・アドレスである。 SRC1:データ・アドレスである。 SRC2:データ・アドレスである。 結果: DESTによってアドレス指定されたレジスタに格納されるデータで ある。 ソース1:SRCIによってアドレス指定されたレジスタに格納されているデ ータである。 ソース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は、プロセッサ109が使用する制御信号とデータをデコー ドするデコーダ202を備える。その場合、データは内部バス205を介してレ ジスタ・ファイル204に格納することができる。明確に言えば、実施形態のレ ジスタは特定のタイプの回路にのみに限定されることを意味しない。むしろ実施 形態のレジスタは、データの記憶および供給と、本明細書に記載の機能を実行す ることができればよい。 データは、データのタイプに応じて、整数レジスタ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に接続されている。内部バスには任意の追加のレジ スタが接続される。 他の実施形態では、これらのレジスタのうちのいくつかは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によってサポートさ れる命令のほとんどをサポートする。本発明の他の実施形態では、プロセッサ1 09は米国カリフォルニア州サンタクララのインテル・コーポレイションが販売 するIntel80486TMによってサポートされるすべての演算をサポートす る。本発明の他の実施形態では、プロセッサ109は、すべて米国カリフォルニ ア州サンタクララのインテル・コーポレイションが販売するpentiumTMプ ロセッサ、Intel80486TMプロセッサ、80386TMプロセッサ、In tel80286TMプロセッサ、および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レジスタ・アドレスを含め ることができる。SRCIは第1のソース・レジスタのアドレスである。SRC 2は第2のソース・レジスタのアドレスである。すべての演算が2つのソース・ アドレスを必要とするわけではないので、場合によってはSRC2アドレスは任 意選択である。SRC2アドレスが不要な場合、SRC1アドレスのみが使用さ れる。DESTは、結果データが格納される宛先レジスタのアドレスである。一 実施形態では、SRC1またはSRC2はDESTとしても使用される。SRC 1、SRC2、およびDESTについては第6a図および第6b図を参照しなが ら詳述する。対応するレジスタに格納されているデータをそれぞれSource 1、Source2、およびResultと呼ぶ。これらの各データの長さは6 4ビットである。 本発明の他の実施形態では、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で演算が実行されると、ステップ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が整数レジスタ2 01にバイト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が、そのビット3 0ないしビット0に格納される。残りのビット63ないしビット31は符号フィ ールドである。 前述の第4b図ないし第4d図に示すように、データ・タイプによっては64 ビット幅のレジスタに格納するのは非効率的な格納方法である。たとえば、無符 号バイトのレジスタ内表現410を格納する場合、ビット63ないしビット8は ゼロでなければならず、ビット7ないしビット0にしか非ゼロ・ビットを入れる ことができない。したがって、64ビット・レジスタに1バイトを格納するプロ セッサは、レジスタの容量の12.5%しか使用しない。同様に、機能ユニット 203によって実行される命令は始めの数ビットしか重要ではない。 第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は、レジスタR0212 a〜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は、レジスタ20 9に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のパックされたデータ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’sM anual”に記載されている汎用整数命令コード形式に対応する。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 Man ual”の付録FのF−1〜F−3ページに詳述されている。ビット0ないし2 はSRC2 603を表す。この汎用形式によって、レジスタからレジスタ、メ モリからレジスタ、メモリによるレジスタ、レジスタによるレジスタ、即値によ るレジスタ、レジスタからメモリのアドレス指定を行うことができる。また、一 実施形態では、この汎用形式は整数レジスタからレジスタと、レジスタから整数 レジスタへのアドレス指定もサポートする。 飽和/非飽和の説明 前述のように、T611は演算が任意選択で飽和するかどうかを示す。飽和を 可能にした演算の結果がデータの範囲からオーバーフローまたはアンダーフロー する場合、その結果はクランプされる。クランプとは、結果がその範囲の最大値 または最小値を超える場合、その結果を最大値または最小値に設定することを意 味する。アンダーフローの場合、飽和によって結果がその範囲内の最低値にクラ ンプされ、オーバーフローの場合は最高値にクランプされる。各データ形式の許 容範囲を表1に示す。 前述のように、T611は飽和演算を行うかどうかを示す。したがって、無符 号バイト・データ形式を使用し、演算結果=258で、飽和を使用可能にしてい た場合、結果は演算の宛先レジスタに格納される前に255にクランプされるこ とになる。同様に、演算結果=−32999で、プロセッサ109が飽和を使用 可能にして符号付きデータ形式を使用した場合、結果は演算の宛先レジスタに格 納される前に−32768にクランプされることになる。 シフト演算 本発明の一実施形態では、標準CISC命令セット(アンパックされたデータ 演算)をサポートするだけでなくパックされたデータのシフト演算もサポートす ることによって、CSCアプリケーションのパフォーマンスを向上させる。パッ クされたシフト演算を使用して、高速フーリエ変換、コサイン変換、およびその 他のディジタル画像および音声信号処理アルゴリズムの固定小数点インプレリメ ントの速度を高速化することができる。 本発明の一実施形態では、SRC1レジスタにはシフトさせるデータ(Sou rcel)が入れられ、SRC2レジスタにはシフト・カウントを表すデータ( Source2)が入れられ、DESTレジスタにはシフトの結果(Resul t)が入れられる。すなわちSourcelはシフト・カウントによって独立し てシフトされた各データ要素を有することになる。一実施形態では、Sour ce2は無符号64ビット・スカラと解釈される。他の実施形態では、Sour ce2はパックされたデータであり、Source1内のそれぞれの対応するデ ータ要素のシフト・カウントが入れられる。 本発明の一実施形態では、算術シフトと論理シフトの両方をサポートする。算 術シフトは、各データ要素のビットを指定された数だけ下にシフトし、各データ 要素の上位ビットを符号ビットの初期値で満たす。パックされたバイト・データ の場合の7を超えるシフト・カウント、パックされたワード・データの場合の1 5を超えるシフト・カウント、またはパックされたダブルワードの場合の31を 超えるシフト・カウントがあると、各Resultデータ要素は符号ビットの初 期値で満たされる。論理シフトは、ビットを上下にシフトさせることによって機 能することができる。右シフト論理演算では、各データ要素の上位ビットがゼロ で満たされる。左シフト論理演算では、各データ要素の下位ビットがゼロで満た される。 本発明の一実施形態では、パックされたバイトおよびパックされたワードの右 シフト算術演算と右シフト論理演算と左シフト論理演算がサポートされる。本発 明の他の実施形態では、パックされたダブルワードでもこれらの演算がサポート される。 第7図に、パックされたデータに対してシフト演算を行う方法の一実施形態を 示す。この実施形態は、第2図のプロセッサ109で実施することができる。 ステップ701で、プロセッサ109が受け取った制御信号207をデコーダ 202がデコードする。したがって、デコーダ202は、適切なシフト演算の命 令コードと、整数レジスタ209内の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を介してデータ要素のサイズとシフト演算のタイプとシフトの方 向(論理シフトの場合)も伝達する。 ステップ710で、データ要素のサイズによって次にどのステップを実行する かが決まる。データ要素のサイズが8ビット(バイト・データ)の場合、機能ユ ニット203はステップ712を実行する。しかしパックされたデータ内のデー タ要素のサイズが16ビット(ワード・データ)の場合、機能ユニット203は ステップ714を実行する。一実施形態では、8ビットと16ビットのデータ要 素サイズのパックされたシフトのみがサポートされる。しかし、他の実施形態で は、32ビットのデータ要素サイズのパックされたシフトもサポートされる。 データ要素のサイズが8ビットであると仮定すると、ステップ712が実行さ れる。ステップ712では以下のシフト演算が行われる。Source1のビッ ト7ないし0がシフト・カウント(Source2のビット63ないし0)によ ってシフトされ、Resultのビット7ないし0が生成される。Source 1のビット15ないし8がシフト・カウントによってシフトされ、Result のビット15ないし8が生成される。Source1のビット23ないし16が シフト・カウントによってシフトされ、Resultのビット23ないし16が 生成される。Source1のビット31ないし24がシフト・カウントによっ てシフトされ、Resultのビット31ないし24が生成される。Sourc e1のビット39ないし32がシフト・カウントによってシフトされ、Resu ltのビット39ないし32が生成される。Source1のビット47ないし 40がシフト・カウントによってシフトされ、Resultのビット47ないし 40が生成される。Source1のビット55ないし48がシフト・カウント によってシフトされ、Resultのビット55ないし48が生成される。So urce1のビット63ないし56がシフト・カウントによってシフトされ、R esultのビット63ないし56が生成される。 データ要素のサイズが16ビットであると仮定すると、ステップ714が実行 される。ステップ714では以下のシフト演算が行われる。Source1のビ ット15ないし0がシフト・カウントによってシフトされ、Resultのビッ ト15ないし0が生成される。Source1のビット31ないし16がシフト ・カウントによってシフトされ、Resultのビット31ないし16が生成さ れる。Source1のビット47ないし32がシフト・カウントによってシフ トされ、Resultのビット47ないし32が生成される。Source1の ビット63ないし48がシフト・カウントによってシフトされ、Resultの ビット63ないし48が生成される。 一実施形態では、ステップ712のシフト演算が同時に行われる。しかし、他 の実施形態では、これらのシフト演算は順次に行われる。他の実施形態では、こ れらのシフト演算の一部が同時に行われ、一部は順次に行われる。これは、ステ ップ714のシフト演算にも同様に適用される。 ステップ720で、ResultがDESTレジスタに格納される。 表2に、パックされた右シフト算術演算のレジスタ内表現を示す。最初の行の ビットはSource1のパックされたデータ表現である。2番目の行のビット はSource2のデータ表現である。3番目の行のビットはResultのパ ックされたデータ表現である。各データ要素ビットの下の数字はデータ要素番号 である。たとえば、Source1データ要素3は 100000002である 。 表3に、パックされたバイト・データに対するパック右シフト論理演算のレジ スタ内表現を示す。 表4に、パックされたバイト・データに対するパック左シフト論理演算のレジ スタ内表現を示す。 パックされたデータ回路 一実施形態では、アンパックされたデータに対する単一のシフト演算と同じク ロック・サイクル数で複数のデータ要素に対するシフト演算を行うことができる 。同じクロック・サイクル数での実行を実現するために、並列処理を使用する。 すなわち、データ要素に対してシフト演算を行うように各レジスタが同時に命令 される。これについては以下で詳述する。第8図に、アンパックされたデータに 対するシフト演算と同じクロック・サイクル数でパックされたデータに対するシ フト演算を行うことができる回路の一部の一実施形態を示す。 第8図には、修正バイト・スライス・シフト回路であるバイト・スライス段i 899の使用が図示されている。最上位データ要素バイト・スライスを除く各バ イト・スライスは、シフト・ユニットとビット制御回路を含む。最上位データ要 素バイト・スライスはシフト・ユニットのみを備えるだけでよい。 シフト・ユニットi811とシフト・ユニットi+1871はそれぞれ、シフト・ カウントによってSource1から8ビットをシフトさせることができる。一 実施形態では、各シフト・ユニットは周知の8ビット・シフト回路のように動作 する。各シフト・ユニットは、Source1入力とSource2入力と制御 入力と次段信号と最終段信号と結果出力とを有する。したがって、シフト・ユニ ットi811は、Source1i831入力とSource2[63:0]83 3入力と制御i801入力と次段i813信号と、最終段i812入力と結果レジ スタi851に格納される結果とを有する。したがって、シフト・ユニットi+18 71は、Source1i+1832入力とSource2[63:0]833入 力と制御i+1802入力と次段i+1873信号と最終段i+1872入力と、結果レ ジスタi+1852に格納される結果とを有する。 Source1入力は典型的にはSource1の8ビット部分である。この 8ビットは、最小のタイプのデータ要素である1パックされたバイト・データ要 素を表す。Source2入力はシフト・カウントを表す。一実施形態では、各 シフト・ユニットがSource2[63:0]833から同じシフト・カウン トを受け取る。操作制御回路800が制御信号を送り、各シフト・ユニットをイ ネーブルにし、必要なシフトを行うようにする。この制御信号はシフトのタイプ (算術または論理)とシフトの方向から決定される。そのシフト・ユニットのビ ット制御回路から次段信号を受け取る。シフト・ユニットは、シフトの方向(左 または右)に応じて、次段信号について最上位ビットをシフト・アウトまたはシ フト・インする。同様に、各シフト・ユニットは、シフトの方向(右または左) に応じて、最終段信号について最下位ビットをシフト・アウトまたはシフト・イ ンする。最終段信号は直前の段のビット制御ユニットから受け取る。その結果の 出力は、シフト・ユニットが操作しているSource1の部分に対するシフト 演算の結果を表す。 操作制御回路800からパックされたデータ・イネーブルi806を介してビ ット制御回路i820がイネーブルにされる。ビット制御i820は次段i813 と最終段i+1872を制御する。たとえば、シフト・ユニットi811がSour ce1の下位8ビットを操作し、シフト・ユニットi+1871がSouce1の 次の8ビットを操作するものとする。パックされたバイトに対するシフトを行う 場合、ビット制御i820はシフト・ユニットi+1871からの最下位ビットがシ フト・ユニットi811の最上位ビットに伝達されないようにする。しかし、パ ックされたワードに対するシフトを行う場合は、ビット制御i820はシフト・ ユニットi+1871からの最下位ビットがシフト・ユニットi811の最上位ビッ トと連絡するようにする。 たとえば、表5ではパックされたバイト算術右シフトを行う。シフト・ユニッ トi+1871はデータ要素1を操作し、シフト・ユニットi811はデータ要素0 を操作する。シフト・ユニットi+1871はその最下位ビットをシフト・アウト する。しかし、操作制御回路800はビット制御i820に最終段i+1821から 受け取ったそのビットを次段i813に伝播させるのを停止させる。その代わり に、シフト・ユニットi811が上位ビットを符号ビットであるSource1 [7]で満たす。 しかし、パックされたワード算術シフトを行う場合、シフト・ユニットi+18 71の最下位ビットがシフト・ユニットi811の最上位ビットに伝達される。 表6にこの結果を示す。この伝達はパックされたダブルワード・シフトの場合に も可能になる。 各シフト・ユニットは任意選択で結果レジスタに接続される。結果レジスタに は、完全な結果であるResult[63:0]860をDESTレジスタに送 ることができるまでシフト演算の結果が一時的に格納される。 完全な64ビット・パックされたシフト回路の場合、8個のシフト・ユニット と7個のビット制御ユニットが使用される。このような回路を使用して64ビッ トのアンパックされたデータに対するシフトを行うこともでき、それによって同 じ回路を使用してアンパックされたシフト演算とパックされたシフト演算が行わ れる。 以上、複数データ要素に対して作用するシフト演算を有するプロセッサについ て説明した。
【手続補正書】 【提出日】1997年7月25日 【補正内容】 (1)発明の名称を「パックされたデータのシフト演算を行うプロセッサ」に補 正する。 (2)請求の範囲を、別紙の通り補正する。 請求の範囲 1.第1の命令が、複数のパックされたデータ要素を有する一連の第1のパック されたデータに対して行うシフト演算を指定し、かつ、前記一連の第1のパック されたデータに含まれる数が変わるパックされたデータ要素を設定し、さらに、 前記一連のパックされたデータに含まれるサイズが変わるデータ要素を設定する ように作用するとき、その第1の命令をデコードするように動作するデコーダと 、 前記デコーダに結合され、前記第1の命令に応答して前記複数のパックされた データ要素を同時に独立してシフトさせるように動作する回路と を備えるプロセッサ。 2.前記回路が前記複数のパックされたデータ要素を論理シフトさせるようにさ らに動作し、各パックされたデータ要素内のシフト・カウント数のビットがゼロ で満たされる請求項2に記載のプロセッサ。 3.前記回路が前記複数のパックされたデータ要素の算術シフトを行うように動 作し、各パックされたデータ要素内のシフト・カウント数のビットがそれぞれの パックされたデータ要素の符号ビットで満たされる請求項2に記載のプロセッサ 。 4.前記一連の第1のパックされたデータが2個のパックされた要素を含み、各 パックされた要素が32ビットを有する請求項3に記載のプロセッサ。 5.前記一連の第1のパックされたデータが4個のパックされたデータ要素を含 み、前記一連の第1のパックされたデータの各パックされた要素が16ビットを 有するパックされたワードを表す請求項3に記載のプロセッサ。 6.前記一連の第1のパックされたデータが2個のパックされたデータ要素を含 み、各パックされたデータ要素が32ビットを有する請求項2に記載のプロセッ サ。 7.前記一連の第1のパックされたデータが4個のパックされたデータ要素を含 み、前記一連の第1のパックされたデータの各パックされた要素が16ビットを 有するパックされたワードを表す請求項2に記載のプロセッサ。 8.一連の第1のパックされたデータに含まれる複数のパックされたデータ要素 に対して行うシフト演算を指定するように作用し、前記一連の第1のパックされ たデータに含まれるいくつかのパックされたデータ要素を設定し、前記一連の第 1のパックされたデータに含まれる前記パックされたデータ要素のサイズを設定 するようにさらに作用可能な第1の制御信号をデコードするように動作するデコ ーダと、 前記デコーダに結合され、前記第1の制御信号に応答してパックされたデータ 要素を同時かつ互いに独立してシフトさせるように動作可能な回路と を備えるプロセッサ。 9.前記回路が複数のパックされたデータ要素を論理シフトさせるように動作し 、各パックされたデータ要素内のシフト・カウント数のビットがゼロで満たされ る請求項8に記載のプロセッサ。 10.前記回路が複数のパックされたデータ要素の算術シフトを行うように動作 し、各パックされたデータ要素内のシフト・カウント数のビットがそれぞれのパ ックされたデータ要素の符号ビットで満たされる請求項8に記載のプロセッサ。 11.前記一連の第1のパックされたデータが4個のパックされたデータ要素を 含み、前記一連の第1のパックされたデータの各パックされた要素が16ビット を有するパックされたワードを表す請求項9に記載のプロセッサ。 12.前記複数のパックされたデータ要素が2個のパックされたダブルワードを 含み、各パックされたダブルワードが32ビットを有する請求項9に記載のプロ セッサ。 13.前記一連の第1のパックされたデータが4個のパックされたデータ要素を 含み、前記一連の第1のパックされたデータの各パックされた要素が16ビット を有するパックされたワードを表す請求項10に記載のプロセッサ。 14.前記複数のパックされたデータ要素が2個のパックされたダブルワードを 含み、各パックされたダブルワードが32ビットを有する請求項10に記載のプ ロセッサ。
───────────────────────────────────────────────────── フロントページの続き (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の場所に格納されている値によってシフトし、対応するパッ クされた結果データを前記第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のレジスタに格納されたシフト値にアクセスするステップと、 前記制御信号をデコードする前記デコーダに応答して、前記機能ユニットが前 記第1のパックされたデータ内の各データ要素を前記シフト値によってシフトし てパックされた結果データを生成するステップと、 前記パックされた結果データを前記第1のレジスタに格納するステップとを含 む方法。 11.前記制御信号があるタイプのシフト標識を含み、前記タイプのシフト標識 が左シフト演算と右シフト算術演算と右シフト論理演算のグループのうちの1つ のシフト演算を示すことを特徴とする、請求項10に記載の方法。 12.前記第1のパックされたデータが複数のデータ要素を含み、前記複数のデ ータ要素の各データ要素が所定のビット数によって表され、前記制御信号がサイ ズ標識を含み、前記サイズ標識が前記所定のビット数を示すことを特徴とする、 請求項10に記載の方法。 13.前記第1のレジスタが64ビット長であり、前記第1のパックされたデー タが8個のパックされたバイト・データ要素を含むことを特徴とする、請求項1 0に記載の方法。 14.シフト演算を有するプロセッサであって、 即値によるシフト演算を示す制御信号を受信する制御信号入力を有するデコー ダと、 パックされたデータを格納するレジスタと、 前記デコーダと前記レジスタとに結合され、前記パックされたデータ内の各デ ータ要素を前記即値によってシフトする機能ユニットとを備えるプロセッサ。 15.前記プロセッサが宛先レジスタを備え、前記宛先レジスタが前記機能ユニ ットに結合され、前記機能ユニットがさらにパックされたデータを生成し、前記 宛先レジスタが前記パックされた結果データを格納することを特徴とする、請求 項14に記載のプロセッサ。
JP8519115A 1994-12-01 1995-12-01 パックされたデータのシフト演算を行うプロセッサ Withdrawn JPH10512069A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US34973094A 1994-12-01 1994-12-01
US08/349,730 1994-12-01
PCT/US1995/015682 WO1996017289A1 (en) 1994-12-01 1995-12-01 A novel processor having shift operations

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2005364534A Division JP3924307B2 (ja) 1994-12-01 2005-12-19 算術演算装置及び算術演算方法

Publications (1)

Publication Number Publication Date
JPH10512069A true JPH10512069A (ja) 1998-11-17

Family

ID=23373704

Family Applications (2)

Application Number Title Priority Date Filing Date
JP8519115A Withdrawn JPH10512069A (ja) 1994-12-01 1995-12-01 パックされたデータのシフト演算を行うプロセッサ
JP2005364534A Expired - Lifetime JP3924307B2 (ja) 1994-12-01 2005-12-19 算術演算装置及び算術演算方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2005364534A Expired - Lifetime JP3924307B2 (ja) 1994-12-01 2005-12-19 算術演算装置及び算術演算方法

Country Status (9)

Country Link
US (2) US5666298A (ja)
JP (2) JPH10512069A (ja)
KR (1) KR100252411B1 (ja)
AU (1) AU4595596A (ja)
BR (1) BR9509841A (ja)
CA (1) CA2205830C (ja)
DE (1) DE19581873C2 (ja)
WO (1) WO1996017289A1 (ja)
ZA (1) ZA9510127B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140192A (ja) * 2008-12-10 2010-06-24 Nec Corp バレルシフタ装置及びバレルシフト方法
JP2011108265A (ja) * 2002-08-09 2011-06-02 Marvell World Trade Ltd アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738793B2 (en) * 1994-12-01 2004-05-18 Intel Corporation Processor capable of executing packed shift operations
US6275834B1 (en) * 1994-12-01 2001-08-14 Intel Corporation Apparatus for performing packed shift operations
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point 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
US6006316A (en) * 1996-12-20 1999-12-21 International Business Machines, Corporation Performing SIMD shift and arithmetic operation in non-SIMD architecture by operation on packed data of sub-operands and carry over-correction
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6243803B1 (en) * 1998-03-31 2001-06-05 Intel Corporation Method and apparatus for computing a packed absolute differences with plurality of sign bits using SIMD add circuitry
US6098087A (en) * 1998-04-23 2000-08-01 Infineon Technologies North America Corp. Method and apparatus for performing shift operations on packed data
JP2002522821A (ja) 1998-08-06 2002-07-23 トライメディア テクノロジーズ インク データプロセッサとデータ処理方法
GB0024312D0 (en) 2000-10-04 2000-11-15 Advanced Risc Mach Ltd Single instruction multiple data processing
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7599981B2 (en) 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
GB2411974C (en) * 2003-12-09 2009-09-23 Advanced Risc Mach Ltd Data shift operations
US20060031272A1 (en) * 2004-08-05 2006-02-09 International Business Machines Corporation Alignment shifter supporting multiple precisions
US8289324B1 (en) 2007-12-17 2012-10-16 Nvidia Corporation System, method, and computer program product for spatial hierarchy traversal
US8502819B1 (en) 2007-12-17 2013-08-06 Nvidia Corporation System and method for performing ray tracing node traversal in image rendering
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
US9442731B2 (en) * 2014-03-13 2016-09-13 Intel Corporation Packed two source inter-element shift merge processors, methods, systems, and instructions

Family Cites Families (24)

* 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
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
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
US4451883A (en) * 1981-12-01 1984-05-29 Honeywell Information Systems Inc. Bus sourcing and shifter control of a central processing unit
US4498177A (en) * 1982-08-30 1985-02-05 Sperry Corporation M Out of N code checker circuit
US4583197A (en) * 1983-06-30 1986-04-15 International Business Machines Corporation Multi-stage pass transistor shifter/rotator
US4653019A (en) * 1984-04-19 1987-03-24 Concurrent Computer Corporation High speed barrel shifter
US4707800A (en) * 1985-03-04 1987-11-17 Raytheon Company Adder/substractor for variable length numbers
JPH073653B2 (ja) * 1987-06-30 1995-01-18 三菱電機株式会社 シフタ
US4989168A (en) * 1987-11-30 1991-01-29 Fujitsu Limited Multiplying unit in a computer system, capable of population counting
US4931971A (en) * 1989-01-13 1990-06-05 International Business Machines Corporation Partial decode shifter/rotator
KR920007505B1 (ko) * 1989-02-02 1992-09-04 정호선 신경회로망을 이용한 곱셈기
JPH03248226A (ja) * 1990-02-26 1991-11-06 Nec Corp マイクロプロセッサ
US5327571A (en) * 1990-04-03 1994-07-05 Advanced Micro Devices, Inc. Processor having decoder for decoding unmodified instruction set for addressing register to read or write in parallel or serially shift in from left or right
US5201056A (en) * 1990-05-02 1993-04-06 Motorola, Inc. RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output
US5418915A (en) * 1990-08-08 1995-05-23 Sumitomo Metal Industries, Ltd. Arithmetic unit for SIMD type parallel computer
WO1992009968A1 (en) * 1990-11-27 1992-06-11 Cray Research, Inc. VECTOR WORD SHIFT BY Vo SHIFT COUNT IN VECTOR SUPERCOMPUTER PROCESSOR
US5187679A (en) * 1991-06-05 1993-02-16 International Business Machines Corporation Generalized 7/3 counters
US5408670A (en) * 1992-12-18 1995-04-18 Xerox Corporation Performing arithmetic in parallel on composite operands with packed multi-bit components
US5379240A (en) * 1993-03-08 1995-01-03 Cyrix Corporation Shifter/rotator with preconditioned data
US5477543A (en) * 1994-08-03 1995-12-19 Chromatic Research, Inc. Structure and method for shifting and reordering a plurality of data bytes

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011108265A (ja) * 2002-08-09 2011-06-02 Marvell World Trade Ltd アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム
JP2014225287A (ja) * 2002-08-09 2014-12-04 マーベル ワールド トレード リミテッド アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム
JP2010140192A (ja) * 2008-12-10 2010-06-24 Nec Corp バレルシフタ装置及びバレルシフト方法

Also Published As

Publication number Publication date
US5666298A (en) 1997-09-09
JP2006172486A (ja) 2006-06-29
DE19581873C2 (de) 1999-04-15
JP3924307B2 (ja) 2007-06-06
KR100252411B1 (ko) 2000-04-15
BR9509841A (pt) 1997-11-25
DE19581873T1 (de) 1997-12-11
US5818739A (en) 1998-10-06
ZA9510127B (en) 1996-06-06
WO1996017289A1 (en) 1996-06-06
AU4595596A (en) 1996-06-19
CA2205830C (en) 2000-08-15
CA2205830A1 (en) 1996-06-06

Similar Documents

Publication Publication Date Title
JPH10512069A (ja) パックされたデータのシフト演算を行うプロセッサ
JP3615222B2 (ja) 複合オペランドのパック演算機能を有するマイクロプロセッサ
JPH11500547A (ja) 乗算を有するマイクロプロセッサ
US7451169B2 (en) Method and apparatus for providing packed shift operations in a processor
US5995122A (en) Method and apparatus for parallel conversion of color values from a single precision floating point format to an integer format
US6480868B2 (en) Conversion from packed floating point data to packed 8-bit integer data in different architectural registers
US6502115B2 (en) Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
US7480686B2 (en) Method and apparatus for executing packed shift operations
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: 20040525

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040825

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20041008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050125

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050425

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050725

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051205

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060119

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20060126

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20080902

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20080902