算術演算装置及び算術演算方法
【課題】パックされたデータ・タイプに対するシフト演算の実行を可能にする。
【解決手段】第2の複数のデータ要素を有する第2のパックされたデータを生成するために第1の複数のデータ要素を有する第1のパックされたデータをシフトカウントだけシフトするシフターと、前記第2の複数のデータ要素のそれぞれの少なくとも1つの数字を置換する補正回路であって、シフトされたデータ要素のいずれのデータ要素においても当該データ要素に対応するすべての置換された数字が同じ値の数字に置換される補正回路とを設けた。
【解決手段】第2の複数のデータ要素を有する第2のパックされたデータを生成するために第1の複数のデータ要素を有する第1のパックされたデータをシフトカウントだけシフトするシフターと、前記第2の複数のデータ要素のそれぞれの少なくとも1つの数字を置換する補正回路であって、シフトされたデータ要素のいずれのデータ要素においても当該データ要素に対応するすべての置換された数字が同じ値の数字に置換される補正回路とを設けた。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、単一の制御信号を使用して複数のデータ要素を操作する算術演算(オペレーション)を行う装置および方法に関する。本発明は、パックされたデータ・タイプに対するシフト演算の実行を可能にする。
【背景技術】
【0002】
現在、ほとんどのパーソナル・コンピュータ・システムは1つの命令によって演算(オペレーション)を行って1つの結果を出す。命令の実行速度とプロセッサ命令の複雑さを増すことによって、パフォーマンスの向上が実現され、これは複雑命令セット・コンピュータ(CISC)と呼ばれる。米国カリフォルニア州サンタクララのインテル・コーポレイションが販売するIntel80286TMマイクロプロセッサのようなプロセッサがCISCプロセッサの範疇に入る。
【0003】
以前のコンピュータ・システム・アーキテクチャは、CISCの概念を利用するように最適化されていた。そのようなシステムは一般に、32ビット幅のデータ・バスを持つ。しかし、コンピュータ・サポーテッド・コオペレーション(CSC:電子会議と混在メディア・データ操作を統合したもの)、二次元/三次元グラフィックス、画像処理、ビデオ圧縮/圧縮解除、認識アルゴリズム、および音声操作を対象にしたアプリケーションによって、パフォーマンス向上の必要が増す。しかし、命令の実行速度と複雑さを増すことが唯一の解決策である。
【0004】
これらのアプリケーションの1つの一般的な点は、数ビットだけが重要な、大量のデータを操作することが多いことである。すなわち、意味のあるビットがデータ・バスのサイズよりもはるかに少ないビット数で表されるデータである。たとえば、プロセッサは8ビットおよび16ビットのデータ(たとえばビデオ画像における画素の色成分)に対して多くの演算を実行するが、それよりかなり広いデータ・バスとレジスタを有する。したがって、32ビットのデータ・バスとレジスタを有し、これらのアルゴリズムの1つを実行するプロセッサは、データの先頭8ビットだけが重要であるので、そのデータの処理、伝送、および記憶容量の最大75パーセントが無駄になることがある。
したがって、操作するデータを表すのに必要なビット数とプロセッサの実際のデータ伝送および記憶容量との差をより効率的に使用することによってパフォーマンスを向上させるプロセッサが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【0005】
したがって、操作するデータを表すのに必要なビット数とプロセッサの実際のデータ伝送および記憶容量との差をより効率的に使用することによってパフォーマンスを向上させるプロセッサが望ましい。
【課題を解決するための手段】
【0006】
複数のデータ要素に対して作用するシフト演算を有するプロセッサについて説明する。
このプロセッサは、制御信号を受信するように結合されたデコーダを備える。制御信号は、第1のソース・アドレスと、第2のソース・アドレスと、宛先アドレスと、命令フィールドとを有する。第1のソース・アドレスは第1の場所に対応する。第2のソース・アドレスは第2の場所に対応する。宛先アドレスは第3の場所に対応する。演算フィールドは、あるタイプのパックされたデータのシフト演算を行うことを示す。プロセッサはさらに、デコーダに結合された回路を備える。この回路は、第1の場所に格納された第1のパックされたデータを第2の場所に格納された値によってシフトする回路である。この回路はさらに、対応するパックされた結果データを第3の場所に伝達する。
本説明および図には多くの詳細が含まれるが、本発明は請求の範囲によって定義される。本発明には、それらの請求の範囲に記載されている限定だけが適用される。
【発明を実施するための最良の形態】
【0007】
複数のデータ要素に対して作用するシフト演算を有するプロセッサについて説明する。以下の説明では、本発明を十分に理解することができるように、回路などの多くの特定の詳細を記載する。他の場合には、本発明が無用に不明瞭にならないように、周知の構造および技法については詳細に示さない。
【0008】
本発明の実施態様の説明を理解する基礎となるように、以下のように定義を示す。
ビットXないしビットY:二進数のサブフィールドを規定する。たとえば、 (基数2で示した)バイト001110102 のビット6ないしビット0は、 1110102 のサブフィールドを表す。二進数の後の「2」は基数2を示 す。したがって、10002 は810に等しく、F16は1510に等しい。
Rx : レジスタである。レジスタは、データの記憶と供給を行うことができる任意の 素子である。レジスタの他の機能については後述する。レジスタはプロセッサ のパッケージの一部であるとは限らない。
DEST:データ・アドレスである。
SRC1:データ・アドレスである。
SRC2:データ・アドレスである。
【0009】
結果: DESTによってアドレス指定されたレジスタに格納されるデータである。
ソース1:SRC1によってアドレス指定されたレジスタに格納されているデータで
ある。
ソース2:SRC2によってアドレス指定されたレジスタに格納されているデータで
ある。
【0010】
コンピュータ・システム
第1図を参照すると、本発明の実施形態を実施することができるコンピュータ・システムが、コンピュータ・システム100として図示されている。コンピュータ・システム100は、情報を伝送するバス101またはその他の通信ハードウェアおよびソフトウェアと、バス101に結合された情報を処理するプロセッサ109とを備える。コンピュータ・システム100はさらに、バス101に結合され、プロセッサ109によって実行される情報と命令を記憶するランダム・アクセス・メモリ(RAM)またはその他のダイナミック記憶装置(メイン・メモリ104と呼ぶ)を備える。メイン・メモリ104は、プロセッサ109による命令の実行中に変数またはその他の中間情報を一時的に記憶するためにも使用することができる。コンピュータ・システム100は、バス101に結合され、プロセッサ109のための静的情報および命令を記憶する読取り専用メモリ(ROM)106またはその他のスタティック記憶装置あるいはその両方も備える。バス101には情報と命令を記憶するデータ記憶装置107が結合されている。
【0011】
さらに、コンピュータ・システム100には磁気ディスクや光ディスクなどのデータ記憶装置107とそれに対応するディスク・ドライブを結合することができる。コンピュータ・システム100は、コンピュータ・ユーザに情報を表示するためにバス101を介して表示装置121にも結合することができる。表示装置121は、フレーム・バッファ、専用グラフィックス・レンダリング装置、陰極線管(CRT)、フラット・パネル・ディスプレイを含むことができる。プロセッサ109に情報とコマンド選択を伝えるために、英数字およびその他のキーを備える英数字入力装置122が、典型的にはバス101に結合されている。他のタイプのユーザ入力装置は、プロセッサ109に指示情報とコマンド選択を伝え、表示装置121上のカーソル移動を制御する、マウス、トラックボール、ペン、タッチ画面、カーソル指示キーなどのカーソル制御装置123である。この入力装置は一般に、第1の軸(たとえばx)と第2の軸(たとえばy)の2つの軸に2つの自由度を持ち、それによってこの装置は平面内の位置を指定することができる。しかし、本発明は、2つの自由度しかもたない入力装置には限定されない。
【0012】
バス101に結合することができる他の装置は、命令、データ、またはその他の情報を、紙、フィルム、または同様のタイプの媒体などの媒体に印刷するために使用することができるハード・コピー装置124である。さらに、コンピュータ・システム100は、情報を記録するためにマイクロホンに結合されたオーディオ・ディジタイザなど、録音または再生あるいはその両方のための装置125に結合することができる。さらに、この装置は、ディジタル化された音声を再生するためにディジタル−アナログ(D/A)変換器に結合されたスピーカも含むことができる。
【0013】
また、コンピュータ・システム100は、コンピュータ・ネットワーク(たとえばLAN)内の端末とすることもできる。その場合、コンピュータ・システム100は、いくつかのネットワーク化された装置を含むコンピュータ・システムのコンピュータ・サブシステムとなる。コンピュータ・システム100は、任意選択としてビデオ・ディジタイジング装置126を備える。ビデオ・ディジタイジング装置126を使用して、ビデオ画像を捕らえ、それをコンピュータ・ネットワーク上の他の装置に送信することができる。
【0014】
コンピュータ・システム100は、コンピュータ・サポーテッド・コオペレーション(CSC:電子会議と混在媒体データ操作とが統合されたもの)、二次元/三次元グラフィックス、画像処理、ビデオ圧縮/圧縮解除、認識アルゴリズム、および音声操作に対応するのに有用である。
【0015】
プロセッサ
第2図にプロセッサ109の詳細図を示す。プロセッサ109は、BiCMOS、CMOS、NMOSなどのいくつかの処理技法のいずれかを使用して、1つまたは複数の基板上に実装することができる。
【0016】
プロセッサ109は、プロセッサ109が使用する制御信号とデータをデコードするデコーダ202を備える。その場合、データは内部バス205を介してレジスタ・ファイル204に格納することができる。明確に言えば、実施形態のレジスタは特定のタイプの回路にのみに限定されることを意味しない。むしろ実施形態のレジスタは、データの記憶および供給と、本明細書に記載の機能を実行することができればよい。
【0017】
データは、データのタイプに応じて、整数レジスタ201、レジスタ209、状態レジスタ208、または命令ポインタ・レジスタ211に格納することができる。たとえば浮動小数点レジスタなど他のレジスタをレジスタ・ファイル204に含めることができる。一実施形態では、整数レジスタ201には、32ビットの整数データが格納される。一実施形態では、レジスタ209にはR0 212a〜R7 212hの8個のレジスタが含まれる。レジスタ209内の各レジスタ長は64ビットである。R1 212a、R2 212b、およびR3 212cがレジスタ209内の個々のレジスタの例である。レジスタ209内の32ビットのレジスタを、整数レジスタ201内の整数レジスタに移動させることができる。同様に、整数レジスタ内の値をレジスタ209内の32ビットのレジスタに移動させることができる。
【0018】
状態レジスタ208は、プロセッサ109の状態を示す。命令ポインタ・レジスタ211には、次に実行される命令のアドレスが格納される。整数レジスタ201,レジスタ209、状態レジスタ208、および命令ポインタ・レジスタ211はすべて内部バス205に接続されている。内部バスには任意の追加のレジスタが接続される。
【0019】
他の実施形態では、これらのレジスタのうちのいくつかは2つの異なるタイプのデータに使用することができる。たとえば、レジスタ209と整数レジスタ201を組み合わせて、各レジスタに整数データまたはパックされたデータを格納することができる。他の実施形態では、レジスタ209を浮動小数点レジスタとして使用することができる。この実施形態では、パックされたデータはレジスタ209または浮動小数点データに格納することができる。一実施形態では、組み合わされたレジスタの長さは64ビットで、整数は64ビットで表される。この実施形態では、パックされたデータと整数データを格納する際に、レジスタはその2つのデータ・タイプを区別する必要がない。
【0020】
機能ユニット203は、プロセッサ109が行う演算を実行する。このような演算には、シフト、加算、減算、乗算などが含まれる。機能ユニット203は内部バス205に接続している。キャッシュ206は、プロセッサ109の任意選択要素であり、たとえばメイン・メモリ104からのデータまたは制御信号あるいはその両方をキャッシュするために使用される。キャッシュ206は、デコーダ202に接続され、制御信号207を受信するように接続されている。
【0021】
第3図に、プロセッサ109の動作概要を示す。すなわち、第3図にはプロセッサ109がパックされたデータに対する演算、アンパックされたデータに対する演算、または他の何らかの操作を実行する間にたどるステップが示されている。たとえば、このような操作にはレジスタ・ファイル204内のレジスタに、キャッシュ206、メイン・メモリ104、読取り専用メモリ(ROM)106、またはデータ記憶装置107からデータをロードする操作が含まれる。本発明の一実施形態では、プロセッサ109は、米国カリフォルニア州サンタクララのインテル・コーポレイションが販売するIntel80486TMによってサポートされる命令のほとんどをサポートする。本発明の他の実施形態では、プロセッサ109は米国カリフォルニア州サンタクララのインテル・コーポレイションが販売するIntel80486TMによってサポートされるすべての演算をサポートする。本発明の他の実施形態では、プロセッサ109は、すべて米国カリフォルニア州サンタクララのインテル・コーポレイションが販売するPentium(登録商標)TMプロセッサ、Intel80486TMプロセッサ、80386TMプロセッサ、Intel80286TMプロセッサ、およびIntel8086TMプロセッサによってサポートされるすべての演算をサポートする。本発明の他の実施形態では、プロセッサ109は、米国カリフォルニア州サンタクララのインテル・コーポレイションが定義するIATM(インテル・アーキテクチャ)でサポートされるすべての演算をサポートする(米国カリフォルニア州サンタクララのインテルから入手可能な「Microprocessors,Intel Data Books volume1およびvolume2、1992年および1993年刊」を参照)。一般に、プロセッサ109はPentiumTMプロセッサの現行命令セットをサポートすることができるが、将来の命令と本明細書に記載の命令を組み込むように修正することもできる。重要なのは、汎用プロセッサ109が、本明細書に記載の演算に加えて、従来使用されていた演算をサポートすることができることである。
【0022】
ステップ301で、デコーダ202がキャッシュ206またはバス101から制御信号207を受け取る。デコーダ202は、制御信号をデコードして、実行すべき演算を判断する。
【0023】
ステップ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ビットである。
【0024】
本発明の他の実施形態では、SRC1、SRC2、およびDESTのいずれか1つまたは全部は、プロセッサ109のアドレス可能記憶空間内の記憶場所を規定することができる。たとえば、SRC1はメイン・メモリ104内の記憶場所を識別し、SRC2は整数レジスタ201内の第1のレジスタを識別し、DESTはレジスタ209内の第2のレジスタを識別する。本明細書では説明を簡単にするために、レジスタ・ファイル204へのアクセスについて言及するが、これらのアクセスはレジスタ・ファイル204の代わりにメモりに対して行うこともできる。
【0025】
本発明の他の実施形態では、命令コードはSRC1とSRC2の2つのアドレスしか含まない。この実施形態では、演算の結果はSRC1レジスタまたはSRC2レジスタに格納される。すなわち、SRC1(またはSRC2)をDESTとして使用する。このタイプのアドレス指定は、2つのアドレスしか持たない以前のCISC命令に対応する。これによって、デコーダ202における複雑さが減少する。この実施形態では、SRC1レジスタに含まれるデータを破壊してはならない場合、演算を実行する前にそのデータをまず別のレジスタにコピーしなければならないことに留意されたい。コピーには追加の命令が必要になる。本明細書では説明を簡単にするために、3アドレスのアドレス指定方式について説明する(すなわちSRC1、SRC2、およびDEST)。しかし、一実施形態では制御信号にSRC1とSRC2しか含めることができず、SRC1(またはSRC2)によって宛先レジスタを識別することを想起されたい。
【0026】
制御信号が演算を必要とする場合、ステップ303で、機能ユニット203がレジスタ・ファイル204内のアクセス・データに対してその演算を実行するようにされる。機能ユニット203で演算が実行されると、ステップ304でその結果が制御信号207の要件に従ってレジスタ・ファイル204に戻されて格納される。
【0027】
データ形式および記憶形式
第4a図に、第1図のコンピュータ・システムで使用可能なデータ形式をいくつか示す。これらのデータ形式は固定小数点である。プロセッサ109はこれらのデータ形式を操作することができる。マルチメディア・アルゴリズムはこれらのデータ形式を使用することが多い。バイト401は8ビットの情報を含む。ワード402は16ビットの情報、すなわち2バイトを含む。ダブルワード403は32ビットの情報、すなわち4バイトを含む。したがって、プロセッサ109はこれらの記憶データ形式のうちの任意の1つに対して操作を行うことができる制御信号を実行する。
【0028】
以下の説明では、ビット、バイト、ワード、およびダブルワード・サブフィールドについて言及する。たとえば、(基数2で示す)バイト001110102 のビット6ないしビット0はサブフィールド1110102 を表す。
【0029】
第4b図ないし第4d図に、本発明の一実施形態で使用するレジスタ内表現を示す。たとえば、無符号バイトのレジスタ内表現410によって、整数レジスタ201内のレジスタに格納されているデータを表すことができる。一実施形態では、整数レジスタ201内のレジスタ長は64ビットである。他の実施形態では、整数レジスタ201内のレジスタ長は32ビットである。説明を簡単にするために、以下の説明では64ビットの整数レジスタについて説明するが、32ビットの整数レジスタを使用することもできる。
【0030】
無符号バイトのレジスタ内表現410は、プロセッサ109が整数レジスタ201にバイト401を格納し、そのレジスタ内のビット7ないしビット0の先頭8ビットがそのデータ・バイト401専用であることを示している。これらのビットを{b}と示す。このバイトを正しく表すには、残りの56ビットがゼロでなければならない。符号付きバイトのレジスタ内表現411の場合、整数レジスタ201にはデータはビット6ないしビット0の最初の7ビットにデータとして格納される。7番目のビットは符号ビットを表し、{s}で示す。残りのビット63ないしビット8はそのバイトの符号の継続である。
【0031】
無符号ワードのレジスタ内表現412は、レジスタ201のうちの1つのレジスタに格納される。ビット15ないしビット0には、無符号ワード402が入れられる。これらのビットを{w}で示す。このワードを正しく表すには、残りのビット63ないしビット16はゼロでなければならない。符号付きワード402は、符号付きワードのレジスタ内表現413が示すように、ビット14ないしビット0に格納される。残りのビット63ないしビット15は符号フィールドである。
【0032】
ダブルワード403は、無符号ダブルワードのレジスタ内表現414または符号付きダブルワードのレジスタ内表現415として格納することができる。無符号ダブルワードのレジスタ内表現414のビット31ないしビット0がデータである。これらのビットを{d}で示す。この無符号ダブルワードを正しく表すには、残りのビット63ないしビット32はゼロでなければならない。整数レジスタ201には、符号付きダブルワードのレジスタ内表現415が、そのビット30ないしビット0に格納される。残りのビット63ないしビット31は符号フィールドである。
【0033】
前述の第4b図ないし第4d図に示すように、データ・タイプによっては64ビット幅のレジスタに格納するのは非効率的な格納方法である。たとえば、無符号バイトのレジスタ内表現410を格納する場合、ビット63ないしビット8はゼロでなければならず、ビット7ないしビット0にしか非ゼロ・ビットを入れることができない。したがって、64ビット・レジスタに1バイトを格納するプロセッサは、レジスタの容量の12.5%しか使用しない。同様に、機能ユニット203によって実行される命令は始めの数ビットしか重要ではない。
【0034】
第5a図に、パックされたデータのデータ形式を示す。パックされたバイト501、パックされワード502、パックされたダブルワード503の3つのパックされたデータ形式が図示されている。パックされたバイトは、本発明の一実施形態では64ビット長であり、8個のデータ要素を含む。各データ要素は1バイト長である。一般に、データ要素は1つのレジスタ(または記憶場所)に同じ長さの他のデータ要素と共に格納される個々のデータである。本発明の一実施形態では、1つのレジスタに格納されるデータ要素の数は、64ビットをデータ要素のビット長で割った商である。
【0035】
パックされたワード502は64ビット長であり、4個のワード402データ要素を含む。各ワード402データ要素は、16ビットの情報を含む。
【0036】
パックされたダブルワード503は64ビット長であり、2個のダブルワード403データ要素を含む。各ダブルワード403データ要素は32ビットの情報を含む。
【0037】
第5b図ないし第5d図にレジスタ内にパックされたデータ記憶表現を示す。無符号のパックされたバイトのレジスタ内の表現510は、レジスタR0 212a〜Rn 212afのうちの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番目のビットのみが必要な符号ビットであり、他のビットは使用してもしなくても符号が示されることに留意されたい。
【0038】
無符号のパックされたワードのレジスタ内表現512は、ワード3ないしワード0がレジスタ209のうちの1つのレジスタに格納される様子を示している。ビット15ないしビット0にはワード0のデータ要素情報が入り、ビット31ないしビット16にはデータ要素ワード1の情報が入り、ビット47ないしビット32にはデータ要素ワード2の情報が入り、ビット63ないしビット48にはデータ要素ワード3の情報が入る。符号付きパックされたワードのレジスタ内表現513は無符号のパックされたワードのレジスタ内表現512と同様である。各ワード・データ要素の16番目のビットにのみ、必要な符号標識が入ることに留意されたい。
【0039】
無符号のパックされたダブルワードのレジスタ内表現514は、レジスタ209に2個のダブルワード・データ要素が格納される様子を示している。ダブルワード0はレジスタのビット31ないしビット0に格納される。ダブルワード1はレジスタのビット63ないしビット32に格納される。符号付きパックされたダブルワードのレジスタ内表現515は無符号のパックされたダブルワードのレジスタ内表現514と同様である。必要な符号ビットはダブルワード・データ要素の32番目のビットであることに留意されたい。
【0040】
前述のように、レジスタ209はパックされたデータと整数データの両方に使用することができる。本発明のこの実施形態では、アドレス指定されたレジスタ、たとえばR1 212aにパックされたデータと単純整数/固定小数点データのどちらが格納されているかを追跡するために、個々のプログラミング・プロセッサ109が必要である。他の実施形態では、プロセッサ109はレジスタ209の個々のレジスタに格納されているデータのタイプを追跡することができる。この代替実施形態では、たとえば単純/固定小数点整数データに対してパックされた加算を行おうとした場合、エラーを生成することができる。
【0041】
制御信号の形式
以下に、プロセッサ109がパックされたデータを操作するために使用する制御信号形式の一実施形態について説明する。本発明の一実施形態では、制御信号は32ビットで表される。デコーダ202はバス101から制御信号207を受け取ることができる。他の実施形態では、デコーダ202はキャッシュ206からもそのような制御信号を受け取ることができる。
【0042】
第6a図にパックされたデータを操作する制御信号の一般的な形式を示す。命令フィールドOP601(ビット31ないしビット26)は、たとえば、パックされた加算、パックされた減算など、プロセッサ109によって実行される演算に関する情報を供給する。SRC1 602(ビット25ないしビット20)は、レジスタ209内のレジスタのソース・レジスタ・アドレスを供給する。このソース・レジスタは、制御信号の実行で使用される第1のパックされたデータSource1を保持する。同様に、SRC2 603(ビット19ないしビット14)には、レジスタ209内のレジスタのアドレスが入れられる。この第2のソース・レジスタは、演算の実行時に使用されるパックされたデータSource2を保持する。DEST605(ビット5ないしビット0)にはレジスタ209内のレジスタのアドレスが入れられる。この宛先レジスタには、パックされたデータ演算のパックされた結果データResultが格納される。
【0043】
制御ビットSZ610(ビット12およびビット13)は、第1および第2のパックされたデータ・ソース・レジスタ内のデータ要素の長さを示す。SZ610が012 に等しい場合、パックされたデータはパックされたバイト501としてフォーマットされる。SZ610が102 に等しい場合、パックされたデータはパックされたワード502としてフォーマットされる。しかし、002 または112 と等しいSZ610を受け取った場合、他の実施形態では、これらの値のうちの1つを使用してパックされたダブルワード503を示すことができる。
【0044】
制御ビットT611(ビット11)は、演算を飽和モードで行うかどうかを示す。T611が1の場合、飽和演算が行われる。T611がゼロの場合、非飽和演算が行われる。飽和演算については後述する。
【0045】
制御ビットS612(ビット10)は、符号付き演算の使用を示す。S612が1の場合、符号付き演算が行われる。S612がゼロの場合、無符号演算が行われる。
【0046】
第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を表す。この汎用形式によって、レジスタからレジスタ、メモリからレジスタ、メモリによるレジスタ、レジスタによるレジスタ、即値によるレジスタ、レジスタからメモリのアドレス指定を行うことができる。また、一実施形態では、この汎用形式は整数レジスタからレジスタと、レジスタから整数レジスタへのアドレス指定もサポートする。
【0047】
飽和/非飽和の説明
前述のように、T611は演算が任意選択で飽和するかどうかを示す。飽和を可能にした演算の結果がデータの範囲からオーバーフローまたはアンダーフローする場合、その結果はクランプされる。クランプとは、結果がその範囲の最大値または最小値を超える場合、その結果を最大値または最小値に設定することを意味する。アンダーフローの場合、飽和によって結果がその範囲内の最低値にクランプされ、オーバーフローの場合は最高値にクランプされる。各データ形式の許容範囲を表1に示す。
【0048】
【表1】
【0049】
前述のように、T611は飽和演算を行うかどうかを示す。したがって、無符号バイト・データ形式を使用し、演算結果=258で、飽和を使用可能にしていた場合、結果は演算の宛先レジスタに格納される前に255にクランプされることになる。同様に、演算結果=−32999で、プロセッサ109が飽和を使用可能にして符号付きデータ形式を使用した場合、結果は演算の宛先レジスタに格納される前に−32768にクランプされることになる。
【0050】
シフト演算
本発明の一実施形態では、標準CISC命令セット(アンパックされたデータ演算)をサポートするだけでなくパックされたデータのシフト演算もサポートすることによって、CSCアプリケーションのパフォーマンスを向上させる。パックされたシフト演算を使用して、高速フーリエ変換、コサイン変換、およびその他のディジタル画像および音声信号処理アルゴリズムの固定小数点インプレリメントの速度を高速化することができる。
【0051】
本発明の一実施形態では、SRC1レジスタにはシフトさせるデータ(Source1)が入れられ、SRC2レジスタにはシフト・カウントを表すデータ(Source2)が入れられ、DESTレジスタにはシフトの結果(Result)が入れられる。すなわちSource1はシフト・カウントによって独立してシフトされた各データ要素を有することになる。一実施形態では、Source2は無符号64ビット・スカラと解釈される。他の実施形態では、Source2はパックされたデータであり、Source1内のそれぞれの対応するデータ要素のシフト・カウントが入れられる。
【0052】
本発明の一実施形態では、算術シフトと論理シフトの両方をサポートする。算術シフトは、各データ要素のビットを指定された数だけ下にシフトし、各データ要素の上位ビットを符号ビットの初期値で満たす。パックされたバイト・データの場合の7を超えるシフト・カウント、パックされたワード・データの場合の15を超えるシフト・カウント、またはパックされたダブルワードの場合の31を超えるシフト・カウントがあると、各Resultデータ要素は符号ビットの初期値で満たされる。論理シフトは、ビットを上下にシフトさせることによって機能することができる。右シフト論理演算では、各データ要素の上位ビットがゼロで満たされる。左シフト論理演算では、各データ要素の下位ビットがゼロで満たされる。
【0053】
本発明の一実施形態では、パックされたバイトおよびパックされたワードの右シフト算術演算と右シフト論理演算と左シフト論理演算がサポートされる。本発明の他の実施形態では、パックされたダブルワードでもこれらの演算がサポートされる。
【0054】
第7図に、パックされたデータに対してシフト演算を行う方法の一実施形態を示す。この実施形態は、第2図のプロセッサ109で実施することができる。
【0055】
ステップ701で、プロセッサ109が受け取った制御信号207をデコーダ202がデコードする。したがって、デコーダ202は、適切なシフト演算の命令コードと、整数レジスタ209内のSRC1 602、SRC2 603、およびDEST605アドレスと、飽和/非飽和(シフト演算の場合は必ずしも必要ではない)と、符号付き/無符号(これも必ずしも必要ではない)と、パックされたデータ内のデータ要素の長さとをデコードする。
【0056】
ステップ702で、SRC1 602アドレスとSRC2 603アドレスが与えられた場合、内部バス205を介してデコーダ202がレジスタ・ファイル204内の整数レジスタ209にアクセスする。整数レジスタ209は機能ユニット203にSRC1 602レジスタに格納されているパックされたデータ(Source1)と、SRC2 603レジスタに格納されているスカラ・シフト・カウント(Source2)を供給する。すなわち、整数レジスタ209は、パックされたデータを内部バス205を介して機能ユニット203に伝達する。
【0057】
ステップ703で、デコーダ202は機能ユニット203が適切なパックされたシフト演算を実行することができるようにする。デコーダ202は、さらに、内部バス205を介してデータ要素のサイズとシフト演算のタイプとシフトの方向(論理シフトの場合)も伝達する。
【0058】
ステップ710で、データ要素のサイズによって次にどのステップを実行するかが決まる。データ要素のサイズが8ビット(バイト・データ)の場合、機能ユニット203はステップ712を実行する。しかしパックされたデータ内のデータ要素のサイズが16ビット(ワード・データ)の場合、機能ユニット203はステップ714を実行する。一実施形態では、8ビットと16ビットのデータ要素サイズのパックされたシフトのみがサポートされる。しかし、他の実施形態では、32ビットのデータ要素サイズのパックされたシフトもサポートされる。
【0059】
データ要素のサイズが8ビットであると仮定すると、ステップ712が実行される。ステップ712では以下のシフト演算が行われる。Source1のビット7ないし0がシフト・カウント(Source2のビット63ないし0)によってシフトされ、Resultのビット7ないし0が生成される。Source1のビット15ないし8がシフト・カウントによってシフトされ、Resultのビット15ないし8が生成される。Source1のビット23ないし16がシフト・カウントによってシフトされ、Resultのビット23ないし16が生成される。Source1のビット31ないし24がシフト・カウントによってシフトされ、Resultのビット31ないし24が生成される。Source1のビット39ないし32がシフト・カウントによってシフトされ、Resultのビット39ないし32が生成される。Source1のビット47ないし40がシフト・カウントによってシフトされ、Resultのビット47ないし40が生成される。Source1のビット55ないし48がシフト・カウントによってシフトされ、Resultのビット55ないし48が生成される。Source1のビット63ないし56がシフト・カウントによってシフトされ、Resultのビット63ないし56が生成される。
【0060】
データ要素のサイズが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が生成される。
【0061】
一実施形態では、ステップ712のシフト演算が同時に行われる。しかし、他の実施形態では、これらのシフト演算は順次に行われる。他の実施形態では、これらのシフト演算の一部が同時に行われ、一部は順次に行われる。これは、ステップ714のシフト演算にも同様に適用される。
【0062】
ステップ720で、ResultがDESTレジスタに格納される。
表2に、パックされた右シフト算術演算のレジスタ内表現を示す。最初の行のビットはSource1のパックされたデータ表現である。2番目の行のビットはSource2のデータ表現である。3番目の行のビットはResultのパックされたデータ表現である。各データ要素ビットの下の数字はデータ要素番号である。たとえば、Source1データ要素3は 100000002 である。
【0063】
【表2】
【0064】
表3に、パックされたバイト・データに対するパック右シフト論理演算のレジスタ内表現を示す。
【0065】
【表3】
【0066】
表4に、パックされたバイト・データに対するパック左シフト論理演算のレジスタ内表現を示す。
【0067】
【表4】
【0068】
パックされたデータ回路
一実施形態では、アンパックされたデータに対する単一のシフト演算と同じクロック・サイクル数で複数のデータ要素に対するシフト演算を行うことができる。同じクロック・サイクル数での実行を実現するために、並列処理を使用する。すなわち、データ要素に対してシフト演算を行うように各レジスタが同時に命令される。これについては以下で詳述する。第8図に、アンパックされたデータに対するシフト演算と同じクロック・サイクル数でパックされたデータに対するシフト演算を行うことができる回路の一部の一実施形態を示す。
【0069】
第8図には、修正バイト・スライス・シフト回路であるバイト・スライス段i 899の使用が図示されている。最上位データ要素バイト・スライスを除く各バイト・スライスは、シフト・ユニットとビット制御回路を含む。最上位データ要素バイト・スライスはシフト・ユニットのみを備えるだけでよい。
【0070】
シフト・ユニットi 811とシフト・ユニットi+1 871はそれぞれ、シフト・カウントによってSource1から8ビットをシフトさせることができる。一実施形態では、各シフト・ユニットは周知の8ビット・シフト回路のように動作する。各シフト・ユニットは、Source1入力とSource2入力と制御入力と次段信号と最終段信号と結果出力とを有する。したがって、シフト・ユニットi 811は、Source1i 831入力とSource2[63:0]833入力と制御i 801入力と次段i 813信号と、最終段i 812入力と結果レジスタi 851に格納される結果とを有する。したがって、シフト・ユニットi+1 871は、Source1i+1 832入力とSource2[63:0]833入力と制御i+1 802入力と次段i+1 873信号と最終段i+1 872入力と、結果レジスタi+1 852に格納される結果とを有する。
【0071】
Source1入力は典型的にはSource1の8ビット部分である。この8ビットは、最小のタイプのデータ要素である1パックされたバイト・データ要素を表す。Source2入力はシフト・カウントを表す。一実施形態では、各シフト・ユニットがSource2[63:0]833から同じシフト・カウントを受け取る。操作制御回路800が制御信号を送り、各シフト・ユニットをイネーブルにし、必要なシフトを行うようにする。この制御信号はシフトのタイプ(算術または論理)とシフトの方向から決定される。そのシフト・ユニットのビット制御回路から次段信号を受け取る。シフト・ユニットは、シフトの方向(左または右)に応じて、次段信号について最上位ビットをシフト・アウトまたはシフト・インする。同様に、各シフト・ユニットは、シフトの方向(右または左)に応じて、最終段信号について最下位ビットをシフト・アウトまたはシフト・インする。最終段信号は直前の段のビット制御ユニットから受け取る。その結果の出力は、シフト・ユニットが操作しているSource1の部分に対するシフト演算の結果を表す。
【0072】
操作制御回路800からパックされたデータ・イネーブルi 806を介してビット制御回路i 820がイネーブルにされる。ビット制御i 820は次段i 813と最終段i+1 872を制御する。たとえば、シフト・ユニットi 811がSource1の下位8ビットを操作し、シフト・ユニットi+1 871がSouce1の次の8ビットを操作するものとする。パックされたバイトに対するシフトを行う場合、ビット制御i 820はシフト・ユニットi+1 871からの最下位ビットがシフト・ユニットi 811の最上位ビットに伝達されないようにする。しかし、パックされたワードに対するシフトを行う場合は、ビット制御i 820はシフト・ユニットi+1 871からの最下位ビットがシフト・ユニットi 811の最上位ビットと連絡するようにする。
【0073】
たとえば、表5ではパックされたバイト算術右シフトを行う。シフト・ユニットi+1 871はデータ要素1を操作し、シフト・ユニットi 811はデータ要素0を操作する。シフト・ユニットi+1 871はその最下位ビットをシフト・アウトする。しかし、操作制御回路800はビット制御i 820に最終段i+1 821から受け取ったそのビットを次段i 813に伝播させるのを停止させる。その代わりに、シフト・ユニットi 811が上位ビットを符号ビットであるSource1[7]で満たす。
【0074】
【表5】
【0075】
しかし、パックされたワード算術シフトを行う場合、シフト・ユニットi+1 871の最下位ビットがシフト・ユニットi 811の最上位ビットに伝達される。表6にこの結果を示す。この伝達はパックされたダブルワード・シフトの場合にも可能になる。
【0076】
【表6】
【0077】
各シフト・ユニットは任意選択で結果レジスタに接続される。結果レジスタには、完全な結果であるResult[63:0]860をDESTレジスタに送ることができるまでシフト演算の結果が一時的に格納される。
【0078】
完全な64ビット・パックされたシフト回路の場合、8個のシフト・ユニットと7個のビット制御ユニットが使用される。このような回路を使用して64ビットのアンパックされたデータに対するシフトを行うこともでき、それによって同じ回路を使用してアンパックされたシフト演算とパックされたシフト演算が行われる。
【0079】
以上、複数データ要素に対して作用するシフト演算を有するプロセッサについて説明した。
【図面の簡単な説明】
【0080】
【図1】本発明の方法および装置を使用するコンピュータ・システムの実施形態を示す図である。
【図2】本発明のプロセッサの実施形態を示す図である。
【図3】プロセッサがレジスタ・ファイル内のデータを操作するために使用する一般的なステップを示す流れ図である。
【図4a】記憶データ・タイプを示す図である。
【図4b】レジスタ内整数データ表現を示す図である。
【図4c】レジスタ内整数データ表現を示す図である。
【図4d】レジスタ内整数データ表現を示す図である。
【図5a】パックされたデータ・タイプを示す図である。
【図5b】レジスタ内パックされたデータ表現を示す図である。
【図5c】レジスタ内パックされたデータ表現を示す図である。
【図5d】レジスタ内パックされたデータ表現を示す図である。
【図6a】パックされたデータの使用を示す、コンピュータ・システムで使用される制御信号形式の図である。
【図6b】パックされたデータの使用を示す、コンピュータ・システムで使用可能な第2の制御信号形式の図である。
【図7】パックされたデータに対してシフト演算を行うときにプロセッサが従う方法の一実施形態を示す図である。
【図8】パックされたデータの個々のバイトを処理することができる回路を示す図である。
【符号の説明】
【0081】
100 コンピュータ・システム
109 プロセッサ
【技術分野】
【0001】
本発明は、単一の制御信号を使用して複数のデータ要素を操作する算術演算(オペレーション)を行う装置および方法に関する。本発明は、パックされたデータ・タイプに対するシフト演算の実行を可能にする。
【背景技術】
【0002】
現在、ほとんどのパーソナル・コンピュータ・システムは1つの命令によって演算(オペレーション)を行って1つの結果を出す。命令の実行速度とプロセッサ命令の複雑さを増すことによって、パフォーマンスの向上が実現され、これは複雑命令セット・コンピュータ(CISC)と呼ばれる。米国カリフォルニア州サンタクララのインテル・コーポレイションが販売するIntel80286TMマイクロプロセッサのようなプロセッサがCISCプロセッサの範疇に入る。
【0003】
以前のコンピュータ・システム・アーキテクチャは、CISCの概念を利用するように最適化されていた。そのようなシステムは一般に、32ビット幅のデータ・バスを持つ。しかし、コンピュータ・サポーテッド・コオペレーション(CSC:電子会議と混在メディア・データ操作を統合したもの)、二次元/三次元グラフィックス、画像処理、ビデオ圧縮/圧縮解除、認識アルゴリズム、および音声操作を対象にしたアプリケーションによって、パフォーマンス向上の必要が増す。しかし、命令の実行速度と複雑さを増すことが唯一の解決策である。
【0004】
これらのアプリケーションの1つの一般的な点は、数ビットだけが重要な、大量のデータを操作することが多いことである。すなわち、意味のあるビットがデータ・バスのサイズよりもはるかに少ないビット数で表されるデータである。たとえば、プロセッサは8ビットおよび16ビットのデータ(たとえばビデオ画像における画素の色成分)に対して多くの演算を実行するが、それよりかなり広いデータ・バスとレジスタを有する。したがって、32ビットのデータ・バスとレジスタを有し、これらのアルゴリズムの1つを実行するプロセッサは、データの先頭8ビットだけが重要であるので、そのデータの処理、伝送、および記憶容量の最大75パーセントが無駄になることがある。
したがって、操作するデータを表すのに必要なビット数とプロセッサの実際のデータ伝送および記憶容量との差をより効率的に使用することによってパフォーマンスを向上させるプロセッサが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【0005】
したがって、操作するデータを表すのに必要なビット数とプロセッサの実際のデータ伝送および記憶容量との差をより効率的に使用することによってパフォーマンスを向上させるプロセッサが望ましい。
【課題を解決するための手段】
【0006】
複数のデータ要素に対して作用するシフト演算を有するプロセッサについて説明する。
このプロセッサは、制御信号を受信するように結合されたデコーダを備える。制御信号は、第1のソース・アドレスと、第2のソース・アドレスと、宛先アドレスと、命令フィールドとを有する。第1のソース・アドレスは第1の場所に対応する。第2のソース・アドレスは第2の場所に対応する。宛先アドレスは第3の場所に対応する。演算フィールドは、あるタイプのパックされたデータのシフト演算を行うことを示す。プロセッサはさらに、デコーダに結合された回路を備える。この回路は、第1の場所に格納された第1のパックされたデータを第2の場所に格納された値によってシフトする回路である。この回路はさらに、対応するパックされた結果データを第3の場所に伝達する。
本説明および図には多くの詳細が含まれるが、本発明は請求の範囲によって定義される。本発明には、それらの請求の範囲に記載されている限定だけが適用される。
【発明を実施するための最良の形態】
【0007】
複数のデータ要素に対して作用するシフト演算を有するプロセッサについて説明する。以下の説明では、本発明を十分に理解することができるように、回路などの多くの特定の詳細を記載する。他の場合には、本発明が無用に不明瞭にならないように、周知の構造および技法については詳細に示さない。
【0008】
本発明の実施態様の説明を理解する基礎となるように、以下のように定義を示す。
ビットXないしビットY:二進数のサブフィールドを規定する。たとえば、 (基数2で示した)バイト001110102 のビット6ないしビット0は、 1110102 のサブフィールドを表す。二進数の後の「2」は基数2を示 す。したがって、10002 は810に等しく、F16は1510に等しい。
Rx : レジスタである。レジスタは、データの記憶と供給を行うことができる任意の 素子である。レジスタの他の機能については後述する。レジスタはプロセッサ のパッケージの一部であるとは限らない。
DEST:データ・アドレスである。
SRC1:データ・アドレスである。
SRC2:データ・アドレスである。
【0009】
結果: DESTによってアドレス指定されたレジスタに格納されるデータである。
ソース1:SRC1によってアドレス指定されたレジスタに格納されているデータで
ある。
ソース2:SRC2によってアドレス指定されたレジスタに格納されているデータで
ある。
【0010】
コンピュータ・システム
第1図を参照すると、本発明の実施形態を実施することができるコンピュータ・システムが、コンピュータ・システム100として図示されている。コンピュータ・システム100は、情報を伝送するバス101またはその他の通信ハードウェアおよびソフトウェアと、バス101に結合された情報を処理するプロセッサ109とを備える。コンピュータ・システム100はさらに、バス101に結合され、プロセッサ109によって実行される情報と命令を記憶するランダム・アクセス・メモリ(RAM)またはその他のダイナミック記憶装置(メイン・メモリ104と呼ぶ)を備える。メイン・メモリ104は、プロセッサ109による命令の実行中に変数またはその他の中間情報を一時的に記憶するためにも使用することができる。コンピュータ・システム100は、バス101に結合され、プロセッサ109のための静的情報および命令を記憶する読取り専用メモリ(ROM)106またはその他のスタティック記憶装置あるいはその両方も備える。バス101には情報と命令を記憶するデータ記憶装置107が結合されている。
【0011】
さらに、コンピュータ・システム100には磁気ディスクや光ディスクなどのデータ記憶装置107とそれに対応するディスク・ドライブを結合することができる。コンピュータ・システム100は、コンピュータ・ユーザに情報を表示するためにバス101を介して表示装置121にも結合することができる。表示装置121は、フレーム・バッファ、専用グラフィックス・レンダリング装置、陰極線管(CRT)、フラット・パネル・ディスプレイを含むことができる。プロセッサ109に情報とコマンド選択を伝えるために、英数字およびその他のキーを備える英数字入力装置122が、典型的にはバス101に結合されている。他のタイプのユーザ入力装置は、プロセッサ109に指示情報とコマンド選択を伝え、表示装置121上のカーソル移動を制御する、マウス、トラックボール、ペン、タッチ画面、カーソル指示キーなどのカーソル制御装置123である。この入力装置は一般に、第1の軸(たとえばx)と第2の軸(たとえばy)の2つの軸に2つの自由度を持ち、それによってこの装置は平面内の位置を指定することができる。しかし、本発明は、2つの自由度しかもたない入力装置には限定されない。
【0012】
バス101に結合することができる他の装置は、命令、データ、またはその他の情報を、紙、フィルム、または同様のタイプの媒体などの媒体に印刷するために使用することができるハード・コピー装置124である。さらに、コンピュータ・システム100は、情報を記録するためにマイクロホンに結合されたオーディオ・ディジタイザなど、録音または再生あるいはその両方のための装置125に結合することができる。さらに、この装置は、ディジタル化された音声を再生するためにディジタル−アナログ(D/A)変換器に結合されたスピーカも含むことができる。
【0013】
また、コンピュータ・システム100は、コンピュータ・ネットワーク(たとえばLAN)内の端末とすることもできる。その場合、コンピュータ・システム100は、いくつかのネットワーク化された装置を含むコンピュータ・システムのコンピュータ・サブシステムとなる。コンピュータ・システム100は、任意選択としてビデオ・ディジタイジング装置126を備える。ビデオ・ディジタイジング装置126を使用して、ビデオ画像を捕らえ、それをコンピュータ・ネットワーク上の他の装置に送信することができる。
【0014】
コンピュータ・システム100は、コンピュータ・サポーテッド・コオペレーション(CSC:電子会議と混在媒体データ操作とが統合されたもの)、二次元/三次元グラフィックス、画像処理、ビデオ圧縮/圧縮解除、認識アルゴリズム、および音声操作に対応するのに有用である。
【0015】
プロセッサ
第2図にプロセッサ109の詳細図を示す。プロセッサ109は、BiCMOS、CMOS、NMOSなどのいくつかの処理技法のいずれかを使用して、1つまたは複数の基板上に実装することができる。
【0016】
プロセッサ109は、プロセッサ109が使用する制御信号とデータをデコードするデコーダ202を備える。その場合、データは内部バス205を介してレジスタ・ファイル204に格納することができる。明確に言えば、実施形態のレジスタは特定のタイプの回路にのみに限定されることを意味しない。むしろ実施形態のレジスタは、データの記憶および供給と、本明細書に記載の機能を実行することができればよい。
【0017】
データは、データのタイプに応じて、整数レジスタ201、レジスタ209、状態レジスタ208、または命令ポインタ・レジスタ211に格納することができる。たとえば浮動小数点レジスタなど他のレジスタをレジスタ・ファイル204に含めることができる。一実施形態では、整数レジスタ201には、32ビットの整数データが格納される。一実施形態では、レジスタ209にはR0 212a〜R7 212hの8個のレジスタが含まれる。レジスタ209内の各レジスタ長は64ビットである。R1 212a、R2 212b、およびR3 212cがレジスタ209内の個々のレジスタの例である。レジスタ209内の32ビットのレジスタを、整数レジスタ201内の整数レジスタに移動させることができる。同様に、整数レジスタ内の値をレジスタ209内の32ビットのレジスタに移動させることができる。
【0018】
状態レジスタ208は、プロセッサ109の状態を示す。命令ポインタ・レジスタ211には、次に実行される命令のアドレスが格納される。整数レジスタ201,レジスタ209、状態レジスタ208、および命令ポインタ・レジスタ211はすべて内部バス205に接続されている。内部バスには任意の追加のレジスタが接続される。
【0019】
他の実施形態では、これらのレジスタのうちのいくつかは2つの異なるタイプのデータに使用することができる。たとえば、レジスタ209と整数レジスタ201を組み合わせて、各レジスタに整数データまたはパックされたデータを格納することができる。他の実施形態では、レジスタ209を浮動小数点レジスタとして使用することができる。この実施形態では、パックされたデータはレジスタ209または浮動小数点データに格納することができる。一実施形態では、組み合わされたレジスタの長さは64ビットで、整数は64ビットで表される。この実施形態では、パックされたデータと整数データを格納する際に、レジスタはその2つのデータ・タイプを区別する必要がない。
【0020】
機能ユニット203は、プロセッサ109が行う演算を実行する。このような演算には、シフト、加算、減算、乗算などが含まれる。機能ユニット203は内部バス205に接続している。キャッシュ206は、プロセッサ109の任意選択要素であり、たとえばメイン・メモリ104からのデータまたは制御信号あるいはその両方をキャッシュするために使用される。キャッシュ206は、デコーダ202に接続され、制御信号207を受信するように接続されている。
【0021】
第3図に、プロセッサ109の動作概要を示す。すなわち、第3図にはプロセッサ109がパックされたデータに対する演算、アンパックされたデータに対する演算、または他の何らかの操作を実行する間にたどるステップが示されている。たとえば、このような操作にはレジスタ・ファイル204内のレジスタに、キャッシュ206、メイン・メモリ104、読取り専用メモリ(ROM)106、またはデータ記憶装置107からデータをロードする操作が含まれる。本発明の一実施形態では、プロセッサ109は、米国カリフォルニア州サンタクララのインテル・コーポレイションが販売するIntel80486TMによってサポートされる命令のほとんどをサポートする。本発明の他の実施形態では、プロセッサ109は米国カリフォルニア州サンタクララのインテル・コーポレイションが販売するIntel80486TMによってサポートされるすべての演算をサポートする。本発明の他の実施形態では、プロセッサ109は、すべて米国カリフォルニア州サンタクララのインテル・コーポレイションが販売するPentium(登録商標)TMプロセッサ、Intel80486TMプロセッサ、80386TMプロセッサ、Intel80286TMプロセッサ、およびIntel8086TMプロセッサによってサポートされるすべての演算をサポートする。本発明の他の実施形態では、プロセッサ109は、米国カリフォルニア州サンタクララのインテル・コーポレイションが定義するIATM(インテル・アーキテクチャ)でサポートされるすべての演算をサポートする(米国カリフォルニア州サンタクララのインテルから入手可能な「Microprocessors,Intel Data Books volume1およびvolume2、1992年および1993年刊」を参照)。一般に、プロセッサ109はPentiumTMプロセッサの現行命令セットをサポートすることができるが、将来の命令と本明細書に記載の命令を組み込むように修正することもできる。重要なのは、汎用プロセッサ109が、本明細書に記載の演算に加えて、従来使用されていた演算をサポートすることができることである。
【0022】
ステップ301で、デコーダ202がキャッシュ206またはバス101から制御信号207を受け取る。デコーダ202は、制御信号をデコードして、実行すべき演算を判断する。
【0023】
ステップ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ビットである。
【0024】
本発明の他の実施形態では、SRC1、SRC2、およびDESTのいずれか1つまたは全部は、プロセッサ109のアドレス可能記憶空間内の記憶場所を規定することができる。たとえば、SRC1はメイン・メモリ104内の記憶場所を識別し、SRC2は整数レジスタ201内の第1のレジスタを識別し、DESTはレジスタ209内の第2のレジスタを識別する。本明細書では説明を簡単にするために、レジスタ・ファイル204へのアクセスについて言及するが、これらのアクセスはレジスタ・ファイル204の代わりにメモりに対して行うこともできる。
【0025】
本発明の他の実施形態では、命令コードはSRC1とSRC2の2つのアドレスしか含まない。この実施形態では、演算の結果はSRC1レジスタまたはSRC2レジスタに格納される。すなわち、SRC1(またはSRC2)をDESTとして使用する。このタイプのアドレス指定は、2つのアドレスしか持たない以前のCISC命令に対応する。これによって、デコーダ202における複雑さが減少する。この実施形態では、SRC1レジスタに含まれるデータを破壊してはならない場合、演算を実行する前にそのデータをまず別のレジスタにコピーしなければならないことに留意されたい。コピーには追加の命令が必要になる。本明細書では説明を簡単にするために、3アドレスのアドレス指定方式について説明する(すなわちSRC1、SRC2、およびDEST)。しかし、一実施形態では制御信号にSRC1とSRC2しか含めることができず、SRC1(またはSRC2)によって宛先レジスタを識別することを想起されたい。
【0026】
制御信号が演算を必要とする場合、ステップ303で、機能ユニット203がレジスタ・ファイル204内のアクセス・データに対してその演算を実行するようにされる。機能ユニット203で演算が実行されると、ステップ304でその結果が制御信号207の要件に従ってレジスタ・ファイル204に戻されて格納される。
【0027】
データ形式および記憶形式
第4a図に、第1図のコンピュータ・システムで使用可能なデータ形式をいくつか示す。これらのデータ形式は固定小数点である。プロセッサ109はこれらのデータ形式を操作することができる。マルチメディア・アルゴリズムはこれらのデータ形式を使用することが多い。バイト401は8ビットの情報を含む。ワード402は16ビットの情報、すなわち2バイトを含む。ダブルワード403は32ビットの情報、すなわち4バイトを含む。したがって、プロセッサ109はこれらの記憶データ形式のうちの任意の1つに対して操作を行うことができる制御信号を実行する。
【0028】
以下の説明では、ビット、バイト、ワード、およびダブルワード・サブフィールドについて言及する。たとえば、(基数2で示す)バイト001110102 のビット6ないしビット0はサブフィールド1110102 を表す。
【0029】
第4b図ないし第4d図に、本発明の一実施形態で使用するレジスタ内表現を示す。たとえば、無符号バイトのレジスタ内表現410によって、整数レジスタ201内のレジスタに格納されているデータを表すことができる。一実施形態では、整数レジスタ201内のレジスタ長は64ビットである。他の実施形態では、整数レジスタ201内のレジスタ長は32ビットである。説明を簡単にするために、以下の説明では64ビットの整数レジスタについて説明するが、32ビットの整数レジスタを使用することもできる。
【0030】
無符号バイトのレジスタ内表現410は、プロセッサ109が整数レジスタ201にバイト401を格納し、そのレジスタ内のビット7ないしビット0の先頭8ビットがそのデータ・バイト401専用であることを示している。これらのビットを{b}と示す。このバイトを正しく表すには、残りの56ビットがゼロでなければならない。符号付きバイトのレジスタ内表現411の場合、整数レジスタ201にはデータはビット6ないしビット0の最初の7ビットにデータとして格納される。7番目のビットは符号ビットを表し、{s}で示す。残りのビット63ないしビット8はそのバイトの符号の継続である。
【0031】
無符号ワードのレジスタ内表現412は、レジスタ201のうちの1つのレジスタに格納される。ビット15ないしビット0には、無符号ワード402が入れられる。これらのビットを{w}で示す。このワードを正しく表すには、残りのビット63ないしビット16はゼロでなければならない。符号付きワード402は、符号付きワードのレジスタ内表現413が示すように、ビット14ないしビット0に格納される。残りのビット63ないしビット15は符号フィールドである。
【0032】
ダブルワード403は、無符号ダブルワードのレジスタ内表現414または符号付きダブルワードのレジスタ内表現415として格納することができる。無符号ダブルワードのレジスタ内表現414のビット31ないしビット0がデータである。これらのビットを{d}で示す。この無符号ダブルワードを正しく表すには、残りのビット63ないしビット32はゼロでなければならない。整数レジスタ201には、符号付きダブルワードのレジスタ内表現415が、そのビット30ないしビット0に格納される。残りのビット63ないしビット31は符号フィールドである。
【0033】
前述の第4b図ないし第4d図に示すように、データ・タイプによっては64ビット幅のレジスタに格納するのは非効率的な格納方法である。たとえば、無符号バイトのレジスタ内表現410を格納する場合、ビット63ないしビット8はゼロでなければならず、ビット7ないしビット0にしか非ゼロ・ビットを入れることができない。したがって、64ビット・レジスタに1バイトを格納するプロセッサは、レジスタの容量の12.5%しか使用しない。同様に、機能ユニット203によって実行される命令は始めの数ビットしか重要ではない。
【0034】
第5a図に、パックされたデータのデータ形式を示す。パックされたバイト501、パックされワード502、パックされたダブルワード503の3つのパックされたデータ形式が図示されている。パックされたバイトは、本発明の一実施形態では64ビット長であり、8個のデータ要素を含む。各データ要素は1バイト長である。一般に、データ要素は1つのレジスタ(または記憶場所)に同じ長さの他のデータ要素と共に格納される個々のデータである。本発明の一実施形態では、1つのレジスタに格納されるデータ要素の数は、64ビットをデータ要素のビット長で割った商である。
【0035】
パックされたワード502は64ビット長であり、4個のワード402データ要素を含む。各ワード402データ要素は、16ビットの情報を含む。
【0036】
パックされたダブルワード503は64ビット長であり、2個のダブルワード403データ要素を含む。各ダブルワード403データ要素は32ビットの情報を含む。
【0037】
第5b図ないし第5d図にレジスタ内にパックされたデータ記憶表現を示す。無符号のパックされたバイトのレジスタ内の表現510は、レジスタR0 212a〜Rn 212afのうちの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番目のビットのみが必要な符号ビットであり、他のビットは使用してもしなくても符号が示されることに留意されたい。
【0038】
無符号のパックされたワードのレジスタ内表現512は、ワード3ないしワード0がレジスタ209のうちの1つのレジスタに格納される様子を示している。ビット15ないしビット0にはワード0のデータ要素情報が入り、ビット31ないしビット16にはデータ要素ワード1の情報が入り、ビット47ないしビット32にはデータ要素ワード2の情報が入り、ビット63ないしビット48にはデータ要素ワード3の情報が入る。符号付きパックされたワードのレジスタ内表現513は無符号のパックされたワードのレジスタ内表現512と同様である。各ワード・データ要素の16番目のビットにのみ、必要な符号標識が入ることに留意されたい。
【0039】
無符号のパックされたダブルワードのレジスタ内表現514は、レジスタ209に2個のダブルワード・データ要素が格納される様子を示している。ダブルワード0はレジスタのビット31ないしビット0に格納される。ダブルワード1はレジスタのビット63ないしビット32に格納される。符号付きパックされたダブルワードのレジスタ内表現515は無符号のパックされたダブルワードのレジスタ内表現514と同様である。必要な符号ビットはダブルワード・データ要素の32番目のビットであることに留意されたい。
【0040】
前述のように、レジスタ209はパックされたデータと整数データの両方に使用することができる。本発明のこの実施形態では、アドレス指定されたレジスタ、たとえばR1 212aにパックされたデータと単純整数/固定小数点データのどちらが格納されているかを追跡するために、個々のプログラミング・プロセッサ109が必要である。他の実施形態では、プロセッサ109はレジスタ209の個々のレジスタに格納されているデータのタイプを追跡することができる。この代替実施形態では、たとえば単純/固定小数点整数データに対してパックされた加算を行おうとした場合、エラーを生成することができる。
【0041】
制御信号の形式
以下に、プロセッサ109がパックされたデータを操作するために使用する制御信号形式の一実施形態について説明する。本発明の一実施形態では、制御信号は32ビットで表される。デコーダ202はバス101から制御信号207を受け取ることができる。他の実施形態では、デコーダ202はキャッシュ206からもそのような制御信号を受け取ることができる。
【0042】
第6a図にパックされたデータを操作する制御信号の一般的な形式を示す。命令フィールドOP601(ビット31ないしビット26)は、たとえば、パックされた加算、パックされた減算など、プロセッサ109によって実行される演算に関する情報を供給する。SRC1 602(ビット25ないしビット20)は、レジスタ209内のレジスタのソース・レジスタ・アドレスを供給する。このソース・レジスタは、制御信号の実行で使用される第1のパックされたデータSource1を保持する。同様に、SRC2 603(ビット19ないしビット14)には、レジスタ209内のレジスタのアドレスが入れられる。この第2のソース・レジスタは、演算の実行時に使用されるパックされたデータSource2を保持する。DEST605(ビット5ないしビット0)にはレジスタ209内のレジスタのアドレスが入れられる。この宛先レジスタには、パックされたデータ演算のパックされた結果データResultが格納される。
【0043】
制御ビットSZ610(ビット12およびビット13)は、第1および第2のパックされたデータ・ソース・レジスタ内のデータ要素の長さを示す。SZ610が012 に等しい場合、パックされたデータはパックされたバイト501としてフォーマットされる。SZ610が102 に等しい場合、パックされたデータはパックされたワード502としてフォーマットされる。しかし、002 または112 と等しいSZ610を受け取った場合、他の実施形態では、これらの値のうちの1つを使用してパックされたダブルワード503を示すことができる。
【0044】
制御ビットT611(ビット11)は、演算を飽和モードで行うかどうかを示す。T611が1の場合、飽和演算が行われる。T611がゼロの場合、非飽和演算が行われる。飽和演算については後述する。
【0045】
制御ビットS612(ビット10)は、符号付き演算の使用を示す。S612が1の場合、符号付き演算が行われる。S612がゼロの場合、無符号演算が行われる。
【0046】
第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を表す。この汎用形式によって、レジスタからレジスタ、メモリからレジスタ、メモリによるレジスタ、レジスタによるレジスタ、即値によるレジスタ、レジスタからメモリのアドレス指定を行うことができる。また、一実施形態では、この汎用形式は整数レジスタからレジスタと、レジスタから整数レジスタへのアドレス指定もサポートする。
【0047】
飽和/非飽和の説明
前述のように、T611は演算が任意選択で飽和するかどうかを示す。飽和を可能にした演算の結果がデータの範囲からオーバーフローまたはアンダーフローする場合、その結果はクランプされる。クランプとは、結果がその範囲の最大値または最小値を超える場合、その結果を最大値または最小値に設定することを意味する。アンダーフローの場合、飽和によって結果がその範囲内の最低値にクランプされ、オーバーフローの場合は最高値にクランプされる。各データ形式の許容範囲を表1に示す。
【0048】
【表1】
【0049】
前述のように、T611は飽和演算を行うかどうかを示す。したがって、無符号バイト・データ形式を使用し、演算結果=258で、飽和を使用可能にしていた場合、結果は演算の宛先レジスタに格納される前に255にクランプされることになる。同様に、演算結果=−32999で、プロセッサ109が飽和を使用可能にして符号付きデータ形式を使用した場合、結果は演算の宛先レジスタに格納される前に−32768にクランプされることになる。
【0050】
シフト演算
本発明の一実施形態では、標準CISC命令セット(アンパックされたデータ演算)をサポートするだけでなくパックされたデータのシフト演算もサポートすることによって、CSCアプリケーションのパフォーマンスを向上させる。パックされたシフト演算を使用して、高速フーリエ変換、コサイン変換、およびその他のディジタル画像および音声信号処理アルゴリズムの固定小数点インプレリメントの速度を高速化することができる。
【0051】
本発明の一実施形態では、SRC1レジスタにはシフトさせるデータ(Source1)が入れられ、SRC2レジスタにはシフト・カウントを表すデータ(Source2)が入れられ、DESTレジスタにはシフトの結果(Result)が入れられる。すなわちSource1はシフト・カウントによって独立してシフトされた各データ要素を有することになる。一実施形態では、Source2は無符号64ビット・スカラと解釈される。他の実施形態では、Source2はパックされたデータであり、Source1内のそれぞれの対応するデータ要素のシフト・カウントが入れられる。
【0052】
本発明の一実施形態では、算術シフトと論理シフトの両方をサポートする。算術シフトは、各データ要素のビットを指定された数だけ下にシフトし、各データ要素の上位ビットを符号ビットの初期値で満たす。パックされたバイト・データの場合の7を超えるシフト・カウント、パックされたワード・データの場合の15を超えるシフト・カウント、またはパックされたダブルワードの場合の31を超えるシフト・カウントがあると、各Resultデータ要素は符号ビットの初期値で満たされる。論理シフトは、ビットを上下にシフトさせることによって機能することができる。右シフト論理演算では、各データ要素の上位ビットがゼロで満たされる。左シフト論理演算では、各データ要素の下位ビットがゼロで満たされる。
【0053】
本発明の一実施形態では、パックされたバイトおよびパックされたワードの右シフト算術演算と右シフト論理演算と左シフト論理演算がサポートされる。本発明の他の実施形態では、パックされたダブルワードでもこれらの演算がサポートされる。
【0054】
第7図に、パックされたデータに対してシフト演算を行う方法の一実施形態を示す。この実施形態は、第2図のプロセッサ109で実施することができる。
【0055】
ステップ701で、プロセッサ109が受け取った制御信号207をデコーダ202がデコードする。したがって、デコーダ202は、適切なシフト演算の命令コードと、整数レジスタ209内のSRC1 602、SRC2 603、およびDEST605アドレスと、飽和/非飽和(シフト演算の場合は必ずしも必要ではない)と、符号付き/無符号(これも必ずしも必要ではない)と、パックされたデータ内のデータ要素の長さとをデコードする。
【0056】
ステップ702で、SRC1 602アドレスとSRC2 603アドレスが与えられた場合、内部バス205を介してデコーダ202がレジスタ・ファイル204内の整数レジスタ209にアクセスする。整数レジスタ209は機能ユニット203にSRC1 602レジスタに格納されているパックされたデータ(Source1)と、SRC2 603レジスタに格納されているスカラ・シフト・カウント(Source2)を供給する。すなわち、整数レジスタ209は、パックされたデータを内部バス205を介して機能ユニット203に伝達する。
【0057】
ステップ703で、デコーダ202は機能ユニット203が適切なパックされたシフト演算を実行することができるようにする。デコーダ202は、さらに、内部バス205を介してデータ要素のサイズとシフト演算のタイプとシフトの方向(論理シフトの場合)も伝達する。
【0058】
ステップ710で、データ要素のサイズによって次にどのステップを実行するかが決まる。データ要素のサイズが8ビット(バイト・データ)の場合、機能ユニット203はステップ712を実行する。しかしパックされたデータ内のデータ要素のサイズが16ビット(ワード・データ)の場合、機能ユニット203はステップ714を実行する。一実施形態では、8ビットと16ビットのデータ要素サイズのパックされたシフトのみがサポートされる。しかし、他の実施形態では、32ビットのデータ要素サイズのパックされたシフトもサポートされる。
【0059】
データ要素のサイズが8ビットであると仮定すると、ステップ712が実行される。ステップ712では以下のシフト演算が行われる。Source1のビット7ないし0がシフト・カウント(Source2のビット63ないし0)によってシフトされ、Resultのビット7ないし0が生成される。Source1のビット15ないし8がシフト・カウントによってシフトされ、Resultのビット15ないし8が生成される。Source1のビット23ないし16がシフト・カウントによってシフトされ、Resultのビット23ないし16が生成される。Source1のビット31ないし24がシフト・カウントによってシフトされ、Resultのビット31ないし24が生成される。Source1のビット39ないし32がシフト・カウントによってシフトされ、Resultのビット39ないし32が生成される。Source1のビット47ないし40がシフト・カウントによってシフトされ、Resultのビット47ないし40が生成される。Source1のビット55ないし48がシフト・カウントによってシフトされ、Resultのビット55ないし48が生成される。Source1のビット63ないし56がシフト・カウントによってシフトされ、Resultのビット63ないし56が生成される。
【0060】
データ要素のサイズが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が生成される。
【0061】
一実施形態では、ステップ712のシフト演算が同時に行われる。しかし、他の実施形態では、これらのシフト演算は順次に行われる。他の実施形態では、これらのシフト演算の一部が同時に行われ、一部は順次に行われる。これは、ステップ714のシフト演算にも同様に適用される。
【0062】
ステップ720で、ResultがDESTレジスタに格納される。
表2に、パックされた右シフト算術演算のレジスタ内表現を示す。最初の行のビットはSource1のパックされたデータ表現である。2番目の行のビットはSource2のデータ表現である。3番目の行のビットはResultのパックされたデータ表現である。各データ要素ビットの下の数字はデータ要素番号である。たとえば、Source1データ要素3は 100000002 である。
【0063】
【表2】
【0064】
表3に、パックされたバイト・データに対するパック右シフト論理演算のレジスタ内表現を示す。
【0065】
【表3】
【0066】
表4に、パックされたバイト・データに対するパック左シフト論理演算のレジスタ内表現を示す。
【0067】
【表4】
【0068】
パックされたデータ回路
一実施形態では、アンパックされたデータに対する単一のシフト演算と同じクロック・サイクル数で複数のデータ要素に対するシフト演算を行うことができる。同じクロック・サイクル数での実行を実現するために、並列処理を使用する。すなわち、データ要素に対してシフト演算を行うように各レジスタが同時に命令される。これについては以下で詳述する。第8図に、アンパックされたデータに対するシフト演算と同じクロック・サイクル数でパックされたデータに対するシフト演算を行うことができる回路の一部の一実施形態を示す。
【0069】
第8図には、修正バイト・スライス・シフト回路であるバイト・スライス段i 899の使用が図示されている。最上位データ要素バイト・スライスを除く各バイト・スライスは、シフト・ユニットとビット制御回路を含む。最上位データ要素バイト・スライスはシフト・ユニットのみを備えるだけでよい。
【0070】
シフト・ユニットi 811とシフト・ユニットi+1 871はそれぞれ、シフト・カウントによってSource1から8ビットをシフトさせることができる。一実施形態では、各シフト・ユニットは周知の8ビット・シフト回路のように動作する。各シフト・ユニットは、Source1入力とSource2入力と制御入力と次段信号と最終段信号と結果出力とを有する。したがって、シフト・ユニットi 811は、Source1i 831入力とSource2[63:0]833入力と制御i 801入力と次段i 813信号と、最終段i 812入力と結果レジスタi 851に格納される結果とを有する。したがって、シフト・ユニットi+1 871は、Source1i+1 832入力とSource2[63:0]833入力と制御i+1 802入力と次段i+1 873信号と最終段i+1 872入力と、結果レジスタi+1 852に格納される結果とを有する。
【0071】
Source1入力は典型的にはSource1の8ビット部分である。この8ビットは、最小のタイプのデータ要素である1パックされたバイト・データ要素を表す。Source2入力はシフト・カウントを表す。一実施形態では、各シフト・ユニットがSource2[63:0]833から同じシフト・カウントを受け取る。操作制御回路800が制御信号を送り、各シフト・ユニットをイネーブルにし、必要なシフトを行うようにする。この制御信号はシフトのタイプ(算術または論理)とシフトの方向から決定される。そのシフト・ユニットのビット制御回路から次段信号を受け取る。シフト・ユニットは、シフトの方向(左または右)に応じて、次段信号について最上位ビットをシフト・アウトまたはシフト・インする。同様に、各シフト・ユニットは、シフトの方向(右または左)に応じて、最終段信号について最下位ビットをシフト・アウトまたはシフト・インする。最終段信号は直前の段のビット制御ユニットから受け取る。その結果の出力は、シフト・ユニットが操作しているSource1の部分に対するシフト演算の結果を表す。
【0072】
操作制御回路800からパックされたデータ・イネーブルi 806を介してビット制御回路i 820がイネーブルにされる。ビット制御i 820は次段i 813と最終段i+1 872を制御する。たとえば、シフト・ユニットi 811がSource1の下位8ビットを操作し、シフト・ユニットi+1 871がSouce1の次の8ビットを操作するものとする。パックされたバイトに対するシフトを行う場合、ビット制御i 820はシフト・ユニットi+1 871からの最下位ビットがシフト・ユニットi 811の最上位ビットに伝達されないようにする。しかし、パックされたワードに対するシフトを行う場合は、ビット制御i 820はシフト・ユニットi+1 871からの最下位ビットがシフト・ユニットi 811の最上位ビットと連絡するようにする。
【0073】
たとえば、表5ではパックされたバイト算術右シフトを行う。シフト・ユニットi+1 871はデータ要素1を操作し、シフト・ユニットi 811はデータ要素0を操作する。シフト・ユニットi+1 871はその最下位ビットをシフト・アウトする。しかし、操作制御回路800はビット制御i 820に最終段i+1 821から受け取ったそのビットを次段i 813に伝播させるのを停止させる。その代わりに、シフト・ユニットi 811が上位ビットを符号ビットであるSource1[7]で満たす。
【0074】
【表5】
【0075】
しかし、パックされたワード算術シフトを行う場合、シフト・ユニットi+1 871の最下位ビットがシフト・ユニットi 811の最上位ビットに伝達される。表6にこの結果を示す。この伝達はパックされたダブルワード・シフトの場合にも可能になる。
【0076】
【表6】
【0077】
各シフト・ユニットは任意選択で結果レジスタに接続される。結果レジスタには、完全な結果であるResult[63:0]860をDESTレジスタに送ることができるまでシフト演算の結果が一時的に格納される。
【0078】
完全な64ビット・パックされたシフト回路の場合、8個のシフト・ユニットと7個のビット制御ユニットが使用される。このような回路を使用して64ビットのアンパックされたデータに対するシフトを行うこともでき、それによって同じ回路を使用してアンパックされたシフト演算とパックされたシフト演算が行われる。
【0079】
以上、複数データ要素に対して作用するシフト演算を有するプロセッサについて説明した。
【図面の簡単な説明】
【0080】
【図1】本発明の方法および装置を使用するコンピュータ・システムの実施形態を示す図である。
【図2】本発明のプロセッサの実施形態を示す図である。
【図3】プロセッサがレジスタ・ファイル内のデータを操作するために使用する一般的なステップを示す流れ図である。
【図4a】記憶データ・タイプを示す図である。
【図4b】レジスタ内整数データ表現を示す図である。
【図4c】レジスタ内整数データ表現を示す図である。
【図4d】レジスタ内整数データ表現を示す図である。
【図5a】パックされたデータ・タイプを示す図である。
【図5b】レジスタ内パックされたデータ表現を示す図である。
【図5c】レジスタ内パックされたデータ表現を示す図である。
【図5d】レジスタ内パックされたデータ表現を示す図である。
【図6a】パックされたデータの使用を示す、コンピュータ・システムで使用される制御信号形式の図である。
【図6b】パックされたデータの使用を示す、コンピュータ・システムで使用可能な第2の制御信号形式の図である。
【図7】パックされたデータに対してシフト演算を行うときにプロセッサが従う方法の一実施形態を示す図である。
【図8】パックされたデータの個々のバイトを処理することができる回路を示す図である。
【符号の説明】
【0081】
100 コンピュータ・システム
109 プロセッサ
【特許請求の範囲】
【請求項1】
第2の複数のデータ要素を有する第2のパックされたデータを生成するために第1の複数のデータ要素を有する第1のパックされたデータをシフトカウントだけシフトするシフターと;
前記第2の複数のデータ要素のそれぞれの少なくとも1つの数字を置換する補正回路であって、シフトされたデータ要素のいずれのデータ要素においても当該データ要素に対応するすべての置換された数字が同じ値の数字に置換される補正回路とを備え、
前記補正回路が、さらに、前記第1、第2の複数のデータ要素の長さを設定するとともに前記シフトカウントを多ビットで表された複数の値のいずれかの値に設定するよう動作させる制御信号に応答するよう構成されていることを特徴とする装置。
【請求項2】
複数のデータ要素の長さを設定可能であるとともにシフトカウントを多ビットで表された複数の値のいずれかの値に設定可能な制御命令に応答して前記複数のデータ要素を前記シフトカウントだけシフトするシフト回路と;
第1の値を有する少なくとも1つの置換数字を複数のデータ要素の1つについて生成し、複数のデータ要素の1つに対応しかつ前記少なくとも1つの置換数字からの置換数字を含む被シフトデータ要素を生成するために前記シフト回路に結合された補正回路と
を備えることを特徴とするデジタル処理装置。
【請求項3】
制御信号を受信し、かつ、この制御信号がパックされたシフト命令フォーマットを含む場合はパックされたシフト演算を示すデコーダと;
前記パックされたシフト命令フォーマットにより長さが設定されるとともにシフトカウントが多ビットで表された複数の値のいずれかの値に設定される1組のデータ要素を有する第1のパックされたデータを保持する記憶位置と;
パックされたシフト演算に応答して第1のパックされたデータを前記シフトカウントだけシフトするシフト回路と;
1組のデータ要素の第1のソース・データ要素について第1の置換数字を生成し、第1のソース・データ要素に対応するシフトされた第1の宛先データ要素を生成するためにシフト回路に結合された回路であって、シフトされた第1の宛先データ要素が第1の置換数字を含んでいる補正回路と
を備えることを特徴とするデジタル処理装置。
【請求項4】
制御信号を受信し、かつ、該制御信号が1組のデータ要素の長さを設定するとともにシフトカウントを多ビットで表された複数の値のいずれかの値に設定するよう動作可能なパックされたシフト命令フォーマットを有する場合に該1組のデータ要素に関するパックされたシフト演算を示すデコーダと;
パックされたシフト演算に応答して前記1組のデータ要素を前記シフトカウントだけシフトし、かつ、1組のデータ要素の第1の初期符号値を有する第1のデータ要素に対応する第1の2進置換数字を生成するユニットであって、第1のデータ要素について生成された第1の2進置換数字が、シフトされた第1のデータ要素の高位の2進数字を第1の初期符号値で満たす、またはシフトされた第1のデータ要素の低位の2進数字をゼロの値で満たすためのものであり、かつ、第1の2進置換数字を含むシフトされた第1のデータ要素を生成するためのものである機能ユニットとを備えることを特徴とするデジタル処理装置。
【請求項5】
第1の命令をデコードするように動作可能なデコーダであって、前記命令が、複数のパックされたデータ要素を有する一連の第1のパックされたデータに対して実行されるべきシフト演算を指定するように動作可能であり、さらに、前記一連のパックされたデータに含まれるデータ要素の可変のサイズを指定するとともにシフトカウントを多ビットで表された複数の値のいずれかの値に設定するように動作可能なデコーダと;
前記デコーダに結合され、前記第1の命令に応答して前記複数のパックされたデータ要素を前記シフトカウントだけ独立してシフトするように動作可能な回路と
を備えることを特徴とするプロセッサ。
【請求項6】
パックされたデータをシフトするコンピュータで実施される方法であって、
a)第1の複数のパックされたデータ要素を有する一連の第1のパックされたデータに対して実行されるべきシフト演算を指定し、さらに前記一連のパックされたデータに含まれるパックされた各データ要素の可変のサイズを指定するとともにシフトカウントを多ビットで表された複数の値のいずれかの値に設定する第1の命令をデコードするステップと;
b)前記第1の複数のパックされたデータ要素を前記シフトカウントだけ独立してシフトするステップと
を含むことを特徴とするデジタル処理方法。
【請求項7】
前記複数のパックされたデータ要素は、各々32ビットの2つのパックされたダブルワードを含むことを特徴とする請求項6記載の方法。
【請求項8】
前記一連のパックされたデータは、16ビットのデータ要素を有するパックされたワードを示すことを特徴とする請求項6記載の方法。
【請求項9】
前記シフトするステップは、前記複数のパックされたデータ要素の独立した論理シフトを有し、かつパックされた各データ要素におけるシフト・カウントに対応するビットをゼロで満たすことを特徴とする請求項6〜8のいずれか1項に記載の方法。
【請求項10】
前記シフトするステップは、前記複数のパックされたデータ要素の独立した算術シフトを有し、かつパックされた各データ要素における前記シフト・カウントに対応するビットを当該各データ要素に対する符号ビットで満たすことを特徴とする請求項6〜8のいずれか1項に記載の方法。
【請求項11】
パックされたバイト・データに対する7、またはパックされたワード・データに対する15、あるいはパックされたダブルワード・データに対する31より大きい前記シフト・カウントが、パックされた各データ要素に、当該各データ要素に対する符号ビットを満たすようにすることを特徴とする請求項10に記載の方法。
【請求項12】
前記第1の複数のパックされたデータ要素の各々を独立にシフトすることにより生成される第2の複数のパックされたデータ要素を有する一連のパックされたデータにより、前記一連のパックされたデータを上書きすることを特徴とする請求項6〜11のいずれか1項に記載の方法。
【請求項13】
第1の複数のパックされたデータ要素を格納することができる第1の格納場所と、
多ビットで表された複数の値のいずれかの値に設定される、シフト・カウントを格納することができる第2の格納場所と、
前記第1、第2の格納場所にアクセス可能なデコーダと、
少なくとも1つの命令を表すデータを格納可能であるとともに、該少なくとも1つの命令を前記デコーダに出力可能な第3の格納場所と、
パックされたデータのシフト回路とを備え、
第1の複数のパックされたデータ要素を有し、かつ前記第1の格納場所に格納された一連の第1のパックされたデータに対して実行されるべきシフト演算を指定し、さらに前記一連のパックされたデータに含まれるパックされた各データ要素の可変のサイズを指定する第1の命令を、前記デコーダがデコードし、;
前記第1の複数のパックされたデータ要素を、前記第2の格納場所に格納されたシフト・カウントだけシフトするコンピュータ実施装置。
【請求項14】
前記パックされたシフト命令フォーマットは前記1組のデータ要素の第1の長さを少なくとも64ビットまたは前記1組のデータ要素の第2の長さを64ビットより短い長さに設定するよう動作可能に構成されているとともに、同じ単一のシフト回路と補正回路とが前記第1の長さのデータ要素及び第2の長さのデータ要素に対してパックされたシフト演算を実行するよう構成したことを特徴とする請求項3記載の装置。
【請求項15】
前記パックされたシフト命令フォーマットは3以上のバイトを有し、その第3のバイトが第1の3ビット・ソース−宛先アドレスと第2の3ビット・ソースアドレスを保持可能であることを特徴とする請求項3または14のいずれか1項に記載の装置。
【請求項16】
前記パックされたシフト命令フォーマットは3以上のバイトを有し、その第1、第2のバイトが、前記1組のデータ要素に対して16ビット、32ビットまたは64ビット要素の論理または算術右シフトを実行するための、パックされたシフト演算を指定する演算コードを保持可能であることを特徴とする請求項3、14または15のいずれか1項に記載の装置。
【請求項17】
前記パックされたシフト命令フォーマットは、
前記パックされたシフト演算のオプコードを指定する第1フィールドと、
第1のパックされたデータを保持する記憶場所に対する最初の3ビットソース・アドレスを示す第2フィールドと、
前記シフト・カウントを示す第3フィールドと
を有することを特徴とする請求項4記載の装置。
【請求項18】
前記第3フィールドは、即値をシフト・カウントとして指定できるよう前記パックされたシフト演算のためのオプコードに対して3ビット拡張されていることを特徴とする請求項17記載の装置。
【請求項19】
前記第3フィールドは、シフト・カウントを保持する記憶場所を示す第2の3ビット・ソースアドレスであることを特徴とする請求項17記載の装置。
【請求項20】
前記パックされたシフト命令フォーマットは前記データの長さを16ビット、32ビットまたは64ビットに設定可能であり、同じ単一の機能ユニットが前記16ビット、32ビットまたは64ビット長のデータ要素に対してパックされたシフト演算を実行することを特徴とする請求項4、17、18または19のいずれか1項に記載された装置。
【請求項21】
前記第1の命令は、さらに、データ要素の第1のサイズを64ビットに、データ要素の第2のサイズを16ビットまたは32ビットに指定可能であり、前記第1のサイズが指定されたときにデータ要素をシフトするために前記デコーダに接続された同じ回路が、第2のサイズが指定されたときに対してもデータ要素をシフト可能であることを特徴とする請求項5記載の装置。
【請求項1】
第2の複数のデータ要素を有する第2のパックされたデータを生成するために第1の複数のデータ要素を有する第1のパックされたデータをシフトカウントだけシフトするシフターと;
前記第2の複数のデータ要素のそれぞれの少なくとも1つの数字を置換する補正回路であって、シフトされたデータ要素のいずれのデータ要素においても当該データ要素に対応するすべての置換された数字が同じ値の数字に置換される補正回路とを備え、
前記補正回路が、さらに、前記第1、第2の複数のデータ要素の長さを設定するとともに前記シフトカウントを多ビットで表された複数の値のいずれかの値に設定するよう動作させる制御信号に応答するよう構成されていることを特徴とする装置。
【請求項2】
複数のデータ要素の長さを設定可能であるとともにシフトカウントを多ビットで表された複数の値のいずれかの値に設定可能な制御命令に応答して前記複数のデータ要素を前記シフトカウントだけシフトするシフト回路と;
第1の値を有する少なくとも1つの置換数字を複数のデータ要素の1つについて生成し、複数のデータ要素の1つに対応しかつ前記少なくとも1つの置換数字からの置換数字を含む被シフトデータ要素を生成するために前記シフト回路に結合された補正回路と
を備えることを特徴とするデジタル処理装置。
【請求項3】
制御信号を受信し、かつ、この制御信号がパックされたシフト命令フォーマットを含む場合はパックされたシフト演算を示すデコーダと;
前記パックされたシフト命令フォーマットにより長さが設定されるとともにシフトカウントが多ビットで表された複数の値のいずれかの値に設定される1組のデータ要素を有する第1のパックされたデータを保持する記憶位置と;
パックされたシフト演算に応答して第1のパックされたデータを前記シフトカウントだけシフトするシフト回路と;
1組のデータ要素の第1のソース・データ要素について第1の置換数字を生成し、第1のソース・データ要素に対応するシフトされた第1の宛先データ要素を生成するためにシフト回路に結合された回路であって、シフトされた第1の宛先データ要素が第1の置換数字を含んでいる補正回路と
を備えることを特徴とするデジタル処理装置。
【請求項4】
制御信号を受信し、かつ、該制御信号が1組のデータ要素の長さを設定するとともにシフトカウントを多ビットで表された複数の値のいずれかの値に設定するよう動作可能なパックされたシフト命令フォーマットを有する場合に該1組のデータ要素に関するパックされたシフト演算を示すデコーダと;
パックされたシフト演算に応答して前記1組のデータ要素を前記シフトカウントだけシフトし、かつ、1組のデータ要素の第1の初期符号値を有する第1のデータ要素に対応する第1の2進置換数字を生成するユニットであって、第1のデータ要素について生成された第1の2進置換数字が、シフトされた第1のデータ要素の高位の2進数字を第1の初期符号値で満たす、またはシフトされた第1のデータ要素の低位の2進数字をゼロの値で満たすためのものであり、かつ、第1の2進置換数字を含むシフトされた第1のデータ要素を生成するためのものである機能ユニットとを備えることを特徴とするデジタル処理装置。
【請求項5】
第1の命令をデコードするように動作可能なデコーダであって、前記命令が、複数のパックされたデータ要素を有する一連の第1のパックされたデータに対して実行されるべきシフト演算を指定するように動作可能であり、さらに、前記一連のパックされたデータに含まれるデータ要素の可変のサイズを指定するとともにシフトカウントを多ビットで表された複数の値のいずれかの値に設定するように動作可能なデコーダと;
前記デコーダに結合され、前記第1の命令に応答して前記複数のパックされたデータ要素を前記シフトカウントだけ独立してシフトするように動作可能な回路と
を備えることを特徴とするプロセッサ。
【請求項6】
パックされたデータをシフトするコンピュータで実施される方法であって、
a)第1の複数のパックされたデータ要素を有する一連の第1のパックされたデータに対して実行されるべきシフト演算を指定し、さらに前記一連のパックされたデータに含まれるパックされた各データ要素の可変のサイズを指定するとともにシフトカウントを多ビットで表された複数の値のいずれかの値に設定する第1の命令をデコードするステップと;
b)前記第1の複数のパックされたデータ要素を前記シフトカウントだけ独立してシフトするステップと
を含むことを特徴とするデジタル処理方法。
【請求項7】
前記複数のパックされたデータ要素は、各々32ビットの2つのパックされたダブルワードを含むことを特徴とする請求項6記載の方法。
【請求項8】
前記一連のパックされたデータは、16ビットのデータ要素を有するパックされたワードを示すことを特徴とする請求項6記載の方法。
【請求項9】
前記シフトするステップは、前記複数のパックされたデータ要素の独立した論理シフトを有し、かつパックされた各データ要素におけるシフト・カウントに対応するビットをゼロで満たすことを特徴とする請求項6〜8のいずれか1項に記載の方法。
【請求項10】
前記シフトするステップは、前記複数のパックされたデータ要素の独立した算術シフトを有し、かつパックされた各データ要素における前記シフト・カウントに対応するビットを当該各データ要素に対する符号ビットで満たすことを特徴とする請求項6〜8のいずれか1項に記載の方法。
【請求項11】
パックされたバイト・データに対する7、またはパックされたワード・データに対する15、あるいはパックされたダブルワード・データに対する31より大きい前記シフト・カウントが、パックされた各データ要素に、当該各データ要素に対する符号ビットを満たすようにすることを特徴とする請求項10に記載の方法。
【請求項12】
前記第1の複数のパックされたデータ要素の各々を独立にシフトすることにより生成される第2の複数のパックされたデータ要素を有する一連のパックされたデータにより、前記一連のパックされたデータを上書きすることを特徴とする請求項6〜11のいずれか1項に記載の方法。
【請求項13】
第1の複数のパックされたデータ要素を格納することができる第1の格納場所と、
多ビットで表された複数の値のいずれかの値に設定される、シフト・カウントを格納することができる第2の格納場所と、
前記第1、第2の格納場所にアクセス可能なデコーダと、
少なくとも1つの命令を表すデータを格納可能であるとともに、該少なくとも1つの命令を前記デコーダに出力可能な第3の格納場所と、
パックされたデータのシフト回路とを備え、
第1の複数のパックされたデータ要素を有し、かつ前記第1の格納場所に格納された一連の第1のパックされたデータに対して実行されるべきシフト演算を指定し、さらに前記一連のパックされたデータに含まれるパックされた各データ要素の可変のサイズを指定する第1の命令を、前記デコーダがデコードし、;
前記第1の複数のパックされたデータ要素を、前記第2の格納場所に格納されたシフト・カウントだけシフトするコンピュータ実施装置。
【請求項14】
前記パックされたシフト命令フォーマットは前記1組のデータ要素の第1の長さを少なくとも64ビットまたは前記1組のデータ要素の第2の長さを64ビットより短い長さに設定するよう動作可能に構成されているとともに、同じ単一のシフト回路と補正回路とが前記第1の長さのデータ要素及び第2の長さのデータ要素に対してパックされたシフト演算を実行するよう構成したことを特徴とする請求項3記載の装置。
【請求項15】
前記パックされたシフト命令フォーマットは3以上のバイトを有し、その第3のバイトが第1の3ビット・ソース−宛先アドレスと第2の3ビット・ソースアドレスを保持可能であることを特徴とする請求項3または14のいずれか1項に記載の装置。
【請求項16】
前記パックされたシフト命令フォーマットは3以上のバイトを有し、その第1、第2のバイトが、前記1組のデータ要素に対して16ビット、32ビットまたは64ビット要素の論理または算術右シフトを実行するための、パックされたシフト演算を指定する演算コードを保持可能であることを特徴とする請求項3、14または15のいずれか1項に記載の装置。
【請求項17】
前記パックされたシフト命令フォーマットは、
前記パックされたシフト演算のオプコードを指定する第1フィールドと、
第1のパックされたデータを保持する記憶場所に対する最初の3ビットソース・アドレスを示す第2フィールドと、
前記シフト・カウントを示す第3フィールドと
を有することを特徴とする請求項4記載の装置。
【請求項18】
前記第3フィールドは、即値をシフト・カウントとして指定できるよう前記パックされたシフト演算のためのオプコードに対して3ビット拡張されていることを特徴とする請求項17記載の装置。
【請求項19】
前記第3フィールドは、シフト・カウントを保持する記憶場所を示す第2の3ビット・ソースアドレスであることを特徴とする請求項17記載の装置。
【請求項20】
前記パックされたシフト命令フォーマットは前記データの長さを16ビット、32ビットまたは64ビットに設定可能であり、同じ単一の機能ユニットが前記16ビット、32ビットまたは64ビット長のデータ要素に対してパックされたシフト演算を実行することを特徴とする請求項4、17、18または19のいずれか1項に記載された装置。
【請求項21】
前記第1の命令は、さらに、データ要素の第1のサイズを64ビットに、データ要素の第2のサイズを16ビットまたは32ビットに指定可能であり、前記第1のサイズが指定されたときにデータ要素をシフトするために前記デコーダに接続された同じ回路が、第2のサイズが指定されたときに対してもデータ要素をシフト可能であることを特徴とする請求項5記載の装置。
【図1】
【図2】
【図3】
【図4a】
【図4b】
【図4c】
【図4d】
【図5a】
【図5b】
【図5c】
【図5d】
【図6a】
【図6b】
【図7】
【図8】
【図2】
【図3】
【図4a】
【図4b】
【図4c】
【図4d】
【図5a】
【図5b】
【図5c】
【図5d】
【図6a】
【図6b】
【図7】
【図8】
【公開番号】特開2006−172486(P2006−172486A)
【公開日】平成18年6月29日(2006.6.29)
【国際特許分類】
【出願番号】特願2005−364534(P2005−364534)
【出願日】平成17年12月19日(2005.12.19)
【分割の表示】特願平8−519115の分割
【原出願日】平成7年12月1日(1995.12.1)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】
【公開日】平成18年6月29日(2006.6.29)
【国際特許分類】
【出願日】平成17年12月19日(2005.12.19)
【分割の表示】特願平8−519115の分割
【原出願日】平成7年12月1日(1995.12.1)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】
[ Back to top ]