【誤訳訂正書】
【提出日】平成27年7月7日(2015.7.7)
【誤訳訂正１】
【訂正対象書類名】特許請求の範囲
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【特許請求の範囲】
【請求項１】
第１の値を格納する第１ソースオペランドと、シフト量を格納する第２ソースオペランドと、第２の値を指定または格納する第３ソースオペランドを有するシフトおよびＸＯＲ命令をデコードするデコーダと、
デコードされた前記シフトおよびＸＯＲ命令に応じて、前記第１の値を前記シフト量だけシフトして、前記シフトされた値を前記第２の値でＸＯＲして前記シフトおよびＸＯＲ命令の結果を生成する実行ユニットと、
を備えるプロセッサ。
【請求項２】
前記実行ユニットは、前記シフトおよびＸＯＲ命令の結果における先頭部において連続する０の数が、予め定められた数以上か否かをチェックする
請求項１に記載のプロセッサ。
【請求項３】
前記第１の値は左シフトされる請求項１または２に記載のプロセッサ。
【請求項４】
前記第１の値は論理シフトされる請求項１から３のいずれか一項に記載のプロセッサ。
【請求項５】
前記シフトおよびＸＯＲ命令の結果をチェックすることは、前記結果における先頭部において連続する０の数を、予め定められた先頭部の０の数を保持する第３の値と比較することにより実行される請求項２に記載のプロセッサ。
【請求項６】
シフタとＸＯＲ回路とを備える請求項１から５のいずれか一項に記載のプロセッサ。
【請求項７】
前記シフトおよびＸＯＲ命令の第３ソースオペランドは、第２の値を格納する定数配列のメモリ位置を指定する請求項１から６のいずれか一項に記載のプロセッサ。
【請求項８】
前記第２の値は、ビット反映したランダムなスクランブル定数である請求項１から７のいずれか一項に記載のプロセッサ。
【請求項９】
前記第１の値は、ビット反映したバイトデータのローリングハッシュである請求項１から８のいずれか一項に記載のプロセッサ。
【請求項１０】
データの重複除外を実行するシステムであって、
シフトおよびＸＯＲ命令を含む複数の命令を格納する第１ストレージと、
定数テーブルを格納する第２ストレージと、
プロセッサと、
を備え、
前記プロセッサは、
前記シフトおよびＸＯＲ命令をプリフェッチする命令プリフェッチャと、
第１の値を格納する第１ソースオペランドと、シフト量を格納する第２ソースオペランドと、前記定数テーブル内の第２の値を指定する第３ソースオペランドを有するシフトおよびＸＯＲ命令をデコードするデコーダと、
デコードされた前記シフトおよびＸＯＲ命令に応じて、前記第１の値を前記シフト量だけシフトして、前記シフトされた値を前記第２の値でＸＯＲして前記シフトおよびＸＯＲ命令の結果を生成する実行ユニットと、
を有するシステム。
【請求項１１】
前記実行ユニットは、前記シフトおよびＸＯＲ命令の結果における先頭部において連続する０の数が、予め定められた数以上か否かをチェックする
請求項１０に記載のシステム。
【請求項１２】
前記第１の値は左シフトされる請求項１０または１１に記載のシステム。
【請求項１３】
前記第１の値は右シフトされる請求項１０に記載のシステム。
【誤訳訂正２】
【訂正対象書類名】明細書
【訂正対象項目名】００１０
【訂正方法】変更
【訂正の内容】
【００１０】
現代のプロセッサでは、複数の異なる実行部を利用して、様々なコードおよび命令を処理および実行している。完了まで速いものもあれば、莫大な数のクロックサイクルを要するものもあり、全ての命令を同じように製造するわけではない。命令のスループットが速いと、プロセッサの全体性能は良くなる。従って、多くの命令がより高速に実行されると好適である。しかし、複雑度が高く、実行時間およびプロセッサリソースをより多く必要とする命令も存在する。例を挙げると、浮動小数点命令、ロード／格納処理、データ移動などである。
【誤訳訂正３】
【訂正対象書類名】明細書
【訂正対象項目名】００１１
【訂正方法】変更
【訂正の内容】
【００１１】
インターネットおよびマルチメディアアプリケーションで利用されるコンピュータシステム数が増えるにつれて、さらなるプロセッササポートを導入することが増えてきた。例えば、単一命令多重データ（ＳＩＭＤ）整数／浮動小数点命令、および、ストリーミングＳＩＭＤ拡張（ＳＳＥ）は、特定のプログラムタスクの実行に必要な命令の総数を減らす命令であり、消費電力も減らすことができる。この種類の命令は、複数のデータエレメントに並列処理を行うことにより、ソフトウェアのパフォーマンスを高速化することができる。この結果、ビデオ、音声、および画像／写真処理を含む幅広い範囲のアプリケーションで性能面の利得が得られる。ＳＩＭＤ命令をマイクロプロセッサおよび類似した種類の論理回路に実装するには、通常、多くの課題が存在する。さらに、ＳＩＭＤ演算は複雑なので、しばしば、正確にデータを処理、操作するためにはさらなる回路が必要となる。
【誤訳訂正４】
【訂正対象書類名】明細書
【訂正対象項目名】００２０
【訂正方法】変更
【訂正の内容】
【００２０】
一実施形態では、プロセッサ１０２は、レベル１（Ｌ１）内部キャッシュメモリ１０４を含む。アーキテクチャによっては、プロセッサ１０２は、単一の内部キャッシュまたは複数のレベルの内部キャッシュを有してよい。また別の実施形態では、キャッシュメモリがプロセッサ１０２の外部に常駐していてもよい。また他の実施形態として、実装例および必要性に応じて、内部キャッシュおよび外部キャッシュの両方の組み合わせを含んでもよい。レジスタファイル１０６は、整数レジスタ、浮動小数点レジスタ、ステータスレジスタ、および命令ポインタレジスタ等の様々なレジスタに様々な種類のデータを格納することができる。
【誤訳訂正５】
【訂正対象書類名】明細書
【訂正対象項目名】００２１
【訂正方法】変更
【訂正の内容】
【００２１】
実行ユニット１０８は、整数および浮動小数点演算を実行する論理を含み、これもプロセッサ１０２内に常駐している。プロセッサ１０２はさらに、一定のマクロ命令のマイクロコードを格納するマイクロコード（ｕコード）ＲＯＭを含む。この実施形態では、実行ユニット１０８は、パック命令セット１０９を処理する論理を含む。一実施形態では、パック命令セット１０９は、複数のオペランドにシフト・アンド・ＸＯＲを行う、パック・シフト・アンド・ＸＯＲ命令を含む。パック命令セット１０９を汎用プロセッサ１０２の命令セットに含め、さらに、命令を実行する関連回路も含めることで、多くのマルチメディアアプリケーションが利用する処理を、汎用プロセッサ１０２の充填データを利用して行うことができる。従って多くのマルチメディアアプリケーションは、充填データを処理するためにプロセッサのデータバス全幅を利用することで、加速化してより効率的に実行することができる。これにより、１つの処理を一度に１つのデータエレメントに対して行う際に、プロセッサのデータバスに各小片のデータを転送する必要がなくなる。
【誤訳訂正６】
【訂正対象書類名】明細書
【訂正対象項目名】００３５
【訂正方法】変更
【訂正の内容】
【００３５】
図２は、本発明におけるシフト・アンド・ＸＯＲ演算を行う論理回路を含む一実施形態のプロセッサ２００のマイクロアーキテクチャのブロック図である。シフト・アンド・ＸＯＲ命令の一実施形態では、命令は、浮動小数点の仮数値を、指数が示す量だけ右にシフトさせて、シフトされた値を所与の値でＸＯＲして、最終結果を生成する。一実施形態では、正常のフロントエンド２０１は、実行するマクロ命令をフェッチしてきて、プロセッサパイプラインでの利用に備えさせるプロセッサ２００の一部である。フロントエンド２０１は、幾つかのユニットを含んでよい。一実施形態では、命令プリフェッチャ２２６が、メモリからマクロ命令をフェッチして、命令デコーダ２２８に供給して、命令デコーダ２２８がこれらを、機械が実行できるマイクロ命令またはマイクロオプレーションと称されるプリミティブ（マイクロオプまたはｕオプと称されることもある）にデコードする。一実施形態では、トレースキャッシュ２３０は、デコードされたｕオプをとり、これらを、ｕオプキュー２３４のプログラムが命ずる（program ordered）シーケンスまたはトレースに、実行用にアセンブルする。トレースキャッシュ２３０が複合マイクロ命令を発見すると、マイクロコードＲＯＭ２３２は、演算を完了させるのに必要なｕオプを提供する。
【誤訳訂正７】
【訂正対象書類名】明細書
【訂正対象項目名】００３７
【訂正方法】変更
【訂正の内容】
【００３７】
ＳＩＭＤその他のマルチメディアタイプの命令は、複合命令とみなされる。殆どの浮動小数点関連の命令も複合命令である。従って、命令デコーダ２２８が複合マクロ命令を発見すると、マイクロコードＲＯＭ２３２の適切な位置にアクセスして、そのマクロ命令のマイクロコードシーケンスを取得する。そのマクロ命令を実行するのに必要な様々なマイクロオプをアウトオブオーダ実行エンジン２０３に通信して、適切な整数および浮動小数点実行部での実行に備えさせる。
【誤訳訂正８】
【訂正対象書類名】明細書
【訂正対象項目名】００３８
【訂正方法】変更
【訂正の内容】
【００３８】
アウトオブオーダ実行エンジン２０３では、マイクロ命令を実行に備えさせる。アウトオブオーダ実行論理は、マイクロ命令がパイプラインを流れて実行をスケジュールされるときに、マイクロ命令のフローの平滑化および順序のつけ直し（リオーダ）を行って性能を最適化するための複数のバッファを備える。アロケータ論理は、各ｕオプが実行する際に必要とするマシンバッファおよびリソースを割り当てる。レジスタのリネーム論理は、論理レジスタをレジスタファイルのエントリへとリネームする。アロケータはさらに、命令スケジューラ、メモリスケジューラ、高速スケジューラ２０２、遅い／汎用の浮動小数点スケジューラ２０４、および簡易浮動小数点スケジューラ２０６の前に、各ｕオプのエントリを２つのｕオプキューのどちらかに対して、１つをメモリ処理に、１つを非メモリ処理に、という具合に割り当てる。ｕオプスケジューラ２０２、２０４、２０６は、従属入力レジスタオペランドソースが準備できているか、および、ｕオプが処理を完了するために必要な実行リソースの利用可能性に基づいて、ｕオプが準備できているかを判断する。本実施形態の高速スケジューラ２０２は、メインクロックサイクルの各半分にスケジュールを行うが、他のスケジューラは、各メインプロセッサのクロックサイクルごとに一度しかスケジュールを行うことができない。スケジューラは、実行するｕオプをスケジュールするべく発送ポート間を調整する。
【誤訳訂正９】
【訂正対象書類名】明細書
【訂正対象項目名】００３９
【訂正方法】変更
【訂正の内容】
【００３９】
レジスタファイル２０８、２１０は、スケジューラ２０２、２０４、２０６、および、実行部２１２、２１４、２１６、２１８、２２０、２２２、２２４の間に存在している（実行ブロック２１１）。整数および浮動小数点演算のためにそれぞれ別個のレジスタファイル２０８、２１０が存在している。本実施形態の各レジスタファイル２０８、２１０は、さらに、今完成したばかりで、まだレジスタファイルに書き込まれていない結果を、新たな依存ｕオプにバイパスまたは転送することのできるバイパスネットワークを含む。整数レジスタファイル２０８および浮動小数点レジスタファイル２１０は、さらに互いに（with the other）データを通信する機能を有する。一実施形態では、整数レジスタファイル２０８は、２つの別個のレジスタファイル（一方のレジスタファイルが、下位３２ビットのデータ用であり、他方のレジスタファイルが、上位３２ビットのデータ用である）に分割される。浮動小数点命令は通常６４ビット幅から１２８ビット幅であるので、一実施形態の浮動小数点レジスタファイル２１０は、１２８ビット幅のエントリを有する。
【誤訳訂正１０】
【訂正対象書類名】明細書
【訂正対象項目名】００４０
【訂正方法】変更
【訂正の内容】
【００４０】
実行ブロック２１１は、命令が実際に実行される実行部２１２、２１４、２１６、２１８、２２０、２２２、２２４を含む。このセクションは、マイクロ命令が実行する必要のある整数および浮動小数点データオペランドの値を格納するレジスタファイル２０８、２１０を含む。本実施形態のプロセッサ２００は、幾つかの実行ユニット（アドレス生成ユニット（ＡＧＵ）２１２、ＡＧＵ２１４、高速ＡＬＵ２１６、高速ＡＬＵ２１８、遅いＡＬＵ２２０、浮動小数点ＡＬＵ２２２、浮動小数点移動ユニット２２４）からなる。本実施形態では、浮動小数点実行ブロック２２２、２２４は、浮動小数点ＭＭＸ、ＳＩＭＤ、およびＳＳＥ演算を実行する。本実施形態の浮動小数点ＡＬＵ２２２は、マイクロオプの除算、平方根、および余りを求める、６４ビット×６４ビットの浮動小数点除算器を含む。本発明の実施形態では、浮動小数点の値に関する任意の処理は、浮動小数点ハードウェアで行われる。例えば、整数フォーマットと浮動小数点フォーマットとの間の変換には、浮動小数点レジスタファイルを利用する。同様に、浮動小数点の除算は、浮動小数点除算器で行う。他方で、非浮動小数点および整数のタイプは、整数ハードウェアリソースで処理する。この単純で、非常に頻繁に行われるＡＬＵ演算は、高速ＡＬＵ事項部２１６、２１８に送られる。本実施形態の高速ＡＬＵ２１６、２１８は、二分の一のクロックサイクルという実効レイテンシーで高速処理を行うことができる。一実施形態では、殆どの複雑な整数演算が遅いＡＬＵ２２０に送られるが、これは、遅いＡＬＵ２２０が、乗算、シフト、フラグ論理、および分岐処理といったレイテンシーの長いタイプの演算用の整数実行ハードウェアを含むからである。メモリロード／格納演算は、ＡＧＵ２１２、２１４で行われる。本実施形態では、整数ＡＬＵ２１６、２１８、２２０を、６４ビットのオペランドに対する整数演算を例にとって記載する。しかし別の実施形態では、ＡＬＵ２１６、２１８、２２０は、１６、３２、１２８、２５６等の様々なデータビットをサポートするために実装することもできる。同様に、浮動小数点部２２２、２２４を、様々な幅のビットを有する一定の範囲のオペランドをサポートするために実装することもできる。一実施形態では、浮動小数点部２２２.２２４は、ＳＩＭＤおよびマルチメディア命令と協働して、１２８ビット幅のパックデータオペランドに演算を行うことができる。
【誤訳訂正１１】
【訂正対象書類名】明細書
【訂正対象項目名】００４１
【訂正方法】変更
【訂正の内容】
【００４１】
「レジスタ」という用語は、ここでは、オペランドを特定するマクロ命令の一部として利用されるオンボードのプロセッサ格納位置を示すために利用される。つまり、ここで利用されるレジスタは、プロセッサ外から見ることができるもののことである（例えばプログラマから見えるもののことである）。しかし、一実施形態のレジスタの意味は、特定の種類の回路に限定されない。一実施形態におけるレジスタは、データの格納および提供が可能であり、且つ、ここで記載する機能を行うことができる、ということのみを要件としている。ここで記載するレジスタは、任意の数の様々な技術を利用してプロセッサ内の回路により実装可能である（例えば、専用物理レジスタ、レジスタリネーミング機能を利用して動的に割り当てられた物理レジスタ、専用レジスタと動的に割り当てられた物理レジスタの組み合わせ等）。一実施形態では、整数レジスタは３２ビットの整数データを格納する。一実施形態のレジスタファイルはさらに、１６個のＸＭＭおよび汎用レジスタを含み、８個のマルチメディア（例えば「ＥＭ６４Ｔ」個の追加）マルチメディアＳＩＭＤレジスタを、パックデータ用に含む。以下の説明では、レジスタは、カリフォルニア州サンタクララのＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＭＭＸ技術で可能となるマイクロプロセッサ内の６４ビット幅のＭＭＸ（登録商標）レジスタ（「ｍｍ」レジスタと称される場合もある）等の、パックデータを保持するよう設計されるデータレジスタとして理解される。これらＭＭＸレジスタは、整数および浮動小数点の形態で利用することができ、ＳＩＭＤおよびＳＳＥ命令に付随するパックデータエレメントで処理することができる。同様に、ＳＳＥ２、ＳＳＥ３、ＳＳＥ４、またはこれらを超える（一般的に「ＳＳＥｘ」と称される）技術に関する１２８ビット幅のＸＭＭレジスタも、これらパックデータオペランドを保持するために利用することができる。本実施形態では、パックデータおよび整数データを格納する際に、レジスタは、２つのデータタイプを区別する必要がない。一実施形態では、他のレジスタおよびレジスタの組み合わせを利用して、２５６ビット以上のデータを格納することもできる。
【誤訳訂正１２】
【訂正対象書類名】明細書
【訂正対象項目名】００４４
【訂正方法】変更
【訂正の内容】
【００４４】
図３Ｂは、別のレジスタ内のデータ格納フォーマットを示す。各パックデータは、１を超える数の独立データエレメントを含んでよい。パック・ハーフ３４１、パック・シングル３４２、およびパック・ダブル３４３という、３つのパックデータエレメントが記載されている。パック・ハーフ３４１、パック・シングル３４２、およびパック・ダブル３４３の一実施形態は、固定小数点（fixed-point）データエレメントを含む。別の実施形態では、パック・ハーフ３４１、パック・シングル３４２、およびパック・ダブル３４３の１以上が、浮動小数点データエレメントを含む。パック・ハーフ３４１の別の実施形態は、１６ビットのデータエレメントを８つ含む１２８ビット長である。パック・シングル３４２の一実施形態は、１２８ビット長であり、３２ビットのデータエレメントを４つ含む。パック・ダブル３４３の一実施形態は、１２８ビット長であり、６４ビットのデータエレメントを２つ含む。これらパックデータフォーマットは、さらに、他のレジスタ長（例えば９６ビット、１６０ビット、１９２ビット、２２４ビット、２５６ビット、あるいはそれ以上のビット）に拡張することもできる。
【誤訳訂正１３】
【訂正対象書類名】明細書
【訂正対象項目名】００４８
【訂正方法】変更
【訂正の内容】
【００４８】
次に図３Ｆを参照すると、一部の別の実施形態では、６４ビットの単一命令多重データ（ＳＩＭＤ）算術演算を、コプロセッサデータ処理（ＣＤＰ）命令により行ってよい。演算符号（オペコード）フォーマット３８０は、ＣＤＰオペコードフィールド３８２および３８９を有するこのようなＣＤＰ命令を示す。この種類のＣＤＰ命令は、シフト・アンド・ＸＯＲ演算の別の実施形態では、フィールド３８３、３８４、３８７、および３８８の１以上により符号化されてよい。各命令について、２つまでのソースオペランド識別子３８５および３９０、並びに、１つの宛先オペランド識別子３８６を含む、３つまでのオペランド位置を特定する。コプロセッサの一実施形態は、８、１６、３２、および６４ビットの値に演算を行うことができる。一実施形態では、シフト・アンド・ＸＯＲ演算を、浮動小数点データエレメントに行う。一部の実施形態では、シフト・アンド・ＸＯＲ命令は、選択フィールド３８１を利用して条件付きで実行されてよい。幾つかのシフト・アンド・ＸＯＲ命令では、ソースデータサイズはフィールド３８３により符号化されてよい。シフト・アンド・ＸＯＲ命令の一部の実施形態では、ゼロ（Ｚ）、負（Ｎ）、繰上げ（carry）（Ｃ）、およびオーバフロー（Ｖ）検知をＳＩＭＤフィールドに対して行う。一部の命令では、飽和のタイプをフィールド３８４で符号化することもできる。
【誤訳訂正１４】
【訂正対象書類名】明細書
【訂正対象項目名】００４９
【訂正方法】変更
【訂正の内容】
【００４９】
図４は、本発明におけるパックデータオペランドにシフト・アンド・ＸＯＲ演算を行う論理の一実施形態のブロック図である。本発明の実施形態は、上述したもののような様々な種類のオペランドを有する関数に実装することができる。簡潔にいうと、以下の記載および例は、データエレメントを処理するシフト・アンド・ＸＯＲ命令を例にとって説明される。一実施形態では、第１のオペランド４０１は、シフタ４１０により、入力４０５が特定する量だけシフトされる。一実施形態では、これは右シフトである。しかし他の実施形態では、シフタは左シフト演算を行う。一部の実施形態では、オペランドはスカラー値であるが、他の実施形態では、複数の異なる可能性のあるデータサイズおよびタイプを有するパックデータ値（例えば浮動小数点、整数）である。一実施形態では、シフトカウント４０５は、パック（あるいは「ベクトル」）値であり、その各エレメントは、対応するシフトカウントエレメントによりシフトされるパックオペランドのエレメントに対応している。他の実施形態では、シフトカウントは、第１のデータオペランドの全てのエレメントに適用される。さらに一部の実施形態では、シフトカウントは、命令の１フィールドで指定される（例えば即値、ｒ／ｍ、またはその他のフィールド）。他の実施形態では、シフトカウントは、命令が指定するレジスタにより指定される。
【誤訳訂正１５】
【訂正対象書類名】明細書
【訂正対象項目名】００５１
【訂正方法】変更
【訂正の内容】
【００５１】
図５は、本発明の一実施形態におけるシフト・アンド・ＸＯＲ命令の演算を示す。処理５０１で、シフト・アンド・ＸＯＲ命令を受信すると、第１のオペランドを、処理５０５のシフトカウント分だけシフトする。一実施形態では、これは右シフトである。他の実施形態では、シフタは左シフトを行ってもよい。一部の実施形態では、オペランドはスカラー値であるが、他の実施形態では、複数の異なる可能性のあるデータサイズおよびタイプを有するパックデータ値（例えば浮動小数点、整数）である。一実施形態では、シフトカウント４０５は、パック（あるいは「ベクトル」）値であり、その各エレメントは、対応するシフトカウントエレメントによりシフトされるパックオペランドのエレメントに対応している。他の実施形態では、シフトカウントは、第１のデータオペランドの全てのエレメントに適用される。さらに一部の実施形態では、シフトカウントは、命令の１フィールドで指定される（例えば即値、ｒ／ｍ、またはその他のフィールド）。他の実施形態では、シフトカウントは、命令が指定するレジスタにより指定される。