説明

複数のデータ・エレメントの収集及び分散

【課題】複数のデータ・エレメントの収集及び分散におけるオーバーヘッドを低減するプロセッサを提供する。
【解決手段】効率的なデータ転送処理は、単一の命令が複数のデータ・エレメントに対する第1の記憶域と第2の記憶域との間の転送処理を指定し、プロセッサ装置140,160によりデコードする段階、前記プロセッサ内の演算実行部による実行のために単一の命令を発行する段階、単一の命令の実行中に例外の発生を検出する段階、及び該例外に応答して、該例外を分配する前に、未解決のトラップ又は割り込みを例外ハンドラに分配する段階、により達成されうる。

【発明の詳細な説明】
【技術分野】
【0001】
本開示は、プロセッサの分野に関する。
【背景技術】
【0002】
マルチメディア・アプリケーション及び同様の特性を有する他のアプリケーションの効率を向上させるために、単一命令複数データ(Single Instruction,Multiple Data:SIMD)アーキテクチャがマイクロプロセッサ・システムで実施され、1つの命令で幾つかのオペランドを並列して操作することを可能にしている。特に、SIMDアーキテクチャは、多くのデータ・エレメントを1つのレジスタ又は連続する記憶域に詰め込むことを利用している。ハードウェアを並列に実行すると、1つの命令により複数の処理が別個のデータ・エレメントに対して実行され、標準的には有意な性能の利益をもたらす。
【0003】
SMIDの性能向上は、不規則なメモリ・アクセス・パターンを含むアプリケーションでは達成するのが困難でありうる。例えば、連続する記憶域に格納されてもされなくてもよいデータ・エレメントの頻繁且つ無作為な更新を必要とするデータ・テーブルを格納するアプリケーションは、標準的に、SIMDハードウェアを十分に利用するために、データの再配置を要求する。このデータの再配置は、大量のオーバーヘッドをもたらすので、SIMDハードウェアにより達成される効率を制限してしまう。
【0004】
SIMDのベクトル幅は増大し(つまり、単一の処理が実行されるデータ・エレメントの数)、アプリケーション開発者(及び編集者)は不連続なメモリ記憶装置内に格納された再構成データ・エレメントに関連付けられたオーバーヘッドのためにSIMDハードウェアを十分に利用することが益々困難であると分かる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、複数のデータ・エレメントの収集及び分散に関する。
【課題を解決するための手段】
【0006】
本発明の1又は複数の実施形態の詳細は、添付の図面及び以下の説明に記載される。他の特徴、目的及び利点は、説明、図面、及び特許請求の範囲から明らかであろう。
【図面の簡単な説明】
【0007】
【図1】コンピュータ・システムの概略図である。
【図2】コンピュータ・システムの概略図である。
【図3】プロセッサ・パイプラインのブロック図である。
【図4】システム内のデータ・フローの概略図である。
【図5】分散処理のデータ・フローの例を示す。
【図6】集中処理のデータ・フローの例を示す。
【図7】パッキング/パッキング解除のための、アドレス収集を支援する有限状態機械、及び読み込み/格納のためのマイクロコードを示す。
【図8】動的収集/分散機械のための実施の例のフロー図である。
【発明を実施するための形態】
【0008】
収集及び分散処理は、SIMDハードウェアによる使用のために格納されたデータ・エレメントを再配置する。収集処理は、データ・エレメントのセットをメモリから読み出し、標準的には単一のレジスタ又はキャッシュ・ラインにそれらを一緒にパッキングする。分散処理は、パッキングされたデータ構造内のデータ・エレメントを不連続の又はランダムな記憶域に分散させることにより逆処理を実行する。1又は複数のレベルのメモリへのアクセスに関連する遅延に加えて、例えば繰り返されるページ・フォルトによる収集又は分散処理中の割り込みは、一般に処理による如何なる進捗も該処理の始めに戻る前に廃棄されてしまうので、これらの処理に関連するオーバーヘッドを有意に増大しうる。本願明細書に組み込まれる米国特許出願番号2009/0172364は、割り込みされるとき、処理の状態を保存する収集、分散及びプリフェッチの実施を開示している。従って、処理が再開されるとき、処理全体を繰り返すことが要求されない。
【0009】
第1の態様によると、効率的なデータ転送処理は、プロセッサ装置により、複数のデータ・エレメントに対する第1の記憶域と第2の記憶域との間の転送処理を指定する単一の命令をデコードする段階、前記プロセッサ内の演算実行部による実行のために単一の命令を発行する段階、単一の命令の実行中に例外の発生を検出する段階、及び該例外に応答して、該例外を配信する前に、保留されているトラップ又は割り込みを例外ハンドラに配信する段階、により達成されうる。
【0010】
以下の実施形態、実施例及び例の説明のために、説明用の用語が用いられる。このような特定の説明用の用語の定義は次の通りである。
【0011】
コンピュータ・システム又はデータ処理装置若しくはシステムは、データにアクセスするための及び/又は通信のための如何なる種類の装置若しくはシステムも意味すると理解されてよい。例として、限定ではなく、次の1又は複数の如何なる組み合わせを有してもよい。ラップトップ・コンピュータ、ノート型コンピュータ、デスクトップ・コンピュータ、パーソナル・デジタル・アシスタント、ハンドヘルド・コンピュータ、個人用整理手帳、パームトップ・コンピュータ、ポケット・コンピュータ、携帯電話機/ファックス装置、ゲーム・コンピュータ、デジタル・タブレット装置、電子書籍、及びデジタル・ビデオ又はデジタル音声レコーダ/プレイヤ。
【0012】
レジスタは、データを格納及び提供可能な如何なる装置であってもよい。データ・フォーマットに関するレジスタの更なる機能は、以下に説明される。レジスタは、必ずしもプロセッサと同じダイ又は同じパッケージに含まれない。
【0013】
「処理する」、「計算する」、「算出する」、「決定する」等のような語は、コンピュータ若しくはコンピュータ・システム又は同様の電子計算装置を表す。コンピュータ若しくはコンピュータ・システム又は同様の電子計算装置は、該コンピュータ・システム内のレジスタ及び/又はメモリ内の電子のような物理量として提示されたデータを、コンピュータ・システムのメモリ又はレジスタ又は他の情報記憶装置、送信機又は表示装置等の中の物理量として同様に提示される他のデータへ操作及び/又は変換する。また、用語「複数の」は、本願明細書を通じて2以上の構成要素、装置、要素、パラメータ等を説明するために用いられうる。更に、用語「例外」及び「フォルト」は、現在の処理の保留を引き起こす事象を表すために道義的に用いられる。種類は、アドレス例外、データ例外、処理例外、オーバーフロー例外、保護例外、アンダーフロー例外を含む。
【0014】
理解されるべき点は、本願明細書に開示された教示は種々の用途で用いられてもよいことである」。この点に限定されないが、本願明細書に開示された回路及び技術は、パーソナル・コンピュータ(PC)、無線装置又は無線局、ビデオ又はデジタル・ゲーム装置又はシステム、画像収集、処理、生成及び/又は視覚化システム又はディスプレイ、デジタル・ディスプレイ・システム、通信システム等のような多くの装置で用いられてもよい。
【0015】
図1は、フロントサイド・バス及び/又はシステム・バスにより相互接続されたプロセッサ、メモリ及び入力/出力装置を有するシステムを示す。図2は、多数のポイント・ツー・ポイント・インタフェースにより相互接続されたプロセッサ、メモリ及び入力/出力装置を有するシステムを示す。他のプロセッサ・アーキテクチャが用いられてもよく、プロセッサ内で他のデータ通信技術が用いられてもよい。
【0016】
図1を参照すると、システム100は、複数のデータ・エレメントに対し第1及び第2の記憶域の間の転送処理(例えば、vscatter、vgather、vscatterpf、vgatherpf)を実行するよう動作する2つのプロセッサ144、160を有する。明確化のため2つのみが示されるが、システム100は2つより多くの又は1つのみのプロセッサを有してもよい。プロセッサ140、160は、データを収集又は分散するために設けられたレベル1(L1)キャッシュ142、162を有する。幾つかの実施形態では、プロセッサ140、160は、バックサイド・バスを介して対応するレベル2(L2)キャッシュに結合される。図1のシステムは、システム・バス106を介しバス・インタフェース144、164、112、108を介して接続された幾つかの機能ユニットを有する。一実施形態では、システム・バス106は、Intel(登録商標)社により製造されたPentium(登録商標)クラスのマイクロプロセッサと共に用いられるようなフロントサイド・バス(FSB)であってもよい。他の実施形態は、他の相互接続が用いられてよい。
【0017】
幾つかの実施では、他の構成要素が、第1の記憶域セットと第2の記憶域セットとの間の収集、分散及び/又はプリフェッチ処理を実行する。例えば、システム100は、プロセッサ140、160に、システム・メモリ110へ及びシステム・メモリ110からデータを読み出し、書き込み、収集及び/又は分散を許可するメモリ制御部134を有する。幾つかの実施形態では、他の構成要素が、収集機能のような機能を実行し、他の内部及び外部メモリが用いられてもよい。他の実施形態は、フラッシュ・メモリを用いた基本入出力システム(Basic Input/Output System:BIOS)の消去可能プログラマブル読み出し専用メモリ(Erasable Programmable Read−Only Memory:EPROM)136を有する。メモリ制御部134は、バス・インタフェース108を有し、メモリ読み込み及び書き込みデータがシステム・バス106に結合された機能ユニットへ及びそれから伝達されるのを許可する。メモリ制御部134はまた、高性能グラフィック・インタフェース139を介して高性能グラフィック回路138に接続されてもよい。特定の実施形態では、高性能グラフィック・インタフェース139は、アドバンスト・グラフィック・ポートAGPインタフェースであってもよい。メモリ制御部134は、システム・メモリ110から読み出したデータを、高性能グラフィック・インタフェース139を介して高性能グラフィック回路138に向けてもよい。
【0018】
図2を参照すると、システム200は、複数のプロセッサを有する。明確にするため、複数のプロセッサの内の2個のプロセッサ270、280のみが示される。プロセッサ270、280はそれぞれ、データを収集及び/又は分散するために、メモリ202、204に接続するローカル・メモリ・チャネル・ハブ(MCH)272、282を有する。プロセッサ270、280は、ポイント・ツー・ポイント・インタフェース250を介し、ポイント・ツー・ポイント・インタフェース回路278、288を用いデータを交換する。プロセッサ270、280はそれぞれ、個々のポイント・ツー・ポイント・インタフェース252、254を介し、ポイント・ツー・ポイント・インタフェース回路276、294、286、298を用いチップセット290とデータを交換する。チップセット290はまた、高性能グラフィック・インタフェース238を介し、高性能グラフィック回路292とデータを交換してもよい。
【0019】
図1で、バス・ブリッジ132は、システム・バス106とバス116との間のデータ交換を許可する。幾つかの実施形態では、バス・ブリッジ132は、業界標準アーキテクチャ(ISA)バス又はPCI(Peripheral Component Interconnect)バスであってもよい。図2で、チップセット290は、バス・インタフェース296を介してバス216とデータを交換する。いずれのシステムでも、バス116、216上に種々の入力/出力装置114、214があってもよい(例えば、音声I/O124、224)。幾つかの実施形態では、別のバス・ブリッジ118、218が用いられ、バス116、216とバス120、220との間のデータ交換を許可してもよい。幾つかの実施形態では、バス120、220は、小型コンピュータ用周辺機器インタフェース(SCSI)バス、Integrated Drive Electronics(IDE)バス、又はUSB(Universal Serial Bus)バスであってもよい。追加I/O装置が、バス220に接続されてもよい。これらは、例えば、マウスを含むキーボード及びカーソル制御装置122、222、モデム及びネットワーク・インタフェースを含む通信装置126、226、及びデータ記憶装置128、228を有してもよい。ソフトウェア・コード130、230は、データ記憶装置128、228に格納される。データ記憶装置128、228は、固定磁気ディスク、フロッピ・ディスク・ドライブ、光ディスク・ドライブ、光磁気ディスク・ドライブ、磁気テープ、又はフラッシュ・メモリを含む不揮発性メモリである。
【0020】
図3を参照すると、プロセッサ・パイプライン300は、図1又は2のプロセッサ又は他のプロセッサにより動作されてもよい。プロセッサ・パイプライン300は、Out−of−Order型パイプラインである。他のパイプライン構成要素又は機構が用いられてもよい。
【0021】
レベル1(L1)キャッシュ・ステージ302は、命令及び/又はデータをレベル1(L1)キャッシュ(図1の142、162)に格納する。プリフェッチ/フェッチ・ステージ304は、レベル1(L1)キャッシュ又は別の場所から命令をフェッチ及び/又はプリフェッチする。命令バッファ・ステージ306は、1又は複数のバッファ内に命令を一時的に蓄える。命令分散ステージ308は、命令をパイプラインに発送する。デコード・ステージ310は、プログラムからプログラム・レベルの命令を取り出し、該プログラム命令から1又は複数の機械レベルの命令を生成する。レジスタ・リネーム・ステージ312は、実行する前に、論理レジスタを実際の物理レジスタにマッピングする。Out−of−Order(OOO)シーケンサ・ステージ314は、実行のために、ソース・レジスタ内の利用可能なデータに基づき、種々の機械命令をスケジューリングする。ソース・レジスタがデータを待っている命令は、該命令の実行を延期させてもよい。一方で、ソース・レジスタが利用可能なデータを有する他の命令は、順々に実行を進めてもよい。幾つかの実施形態では、これらの命令は、実行のために並列してスケジューリングされてもよい。
【0022】
レジスタ・ファイル・ステージ316は、物理(例えばソース)レジスタを読み取る。演算実行部ステージ318は、1又は複数のユニット内に機械命令を入れる。アドバンスト・ロード・アドレス・テーブル(ALAT)ステージ330は、アドバンスト・ロード命令のようなテスト命令に対応する機械命令及び如何なる調停する格納命令を実行している間に、エントリを変更する。退避ステージ320は、機械状態を更新し、物理宛先レジスタに書き込む。
【0023】
図3に示されるパイプライン・ステージは、単なる一例であり、種々のプロセッサ・パイプラインの実施形態において機能及び順序の両者が変更されてもよい。本願明細書に開示された実施形態で用いられるプロセッサは、パイプラインを用いる必要はない。
【0024】
図4を参照すると、データは、図1及び2を参照して説明したシステム内に、例えばキャッシュ・メモリ416及び/又は外部メモリ435内に格納される。データは、(例えば、外部メモリ435内の)連続する場所418、420及び/又は不連続な若しくは隣接しない場所422、424から収集され及び/又はそれらへ分散される。
【0025】
キャッシュ・メモリ416は標準的にプロセッサ(例えば、それぞれ図1、2のうちの一方を参照して説明されたプロセッサ146、160、270及び/又は280)の内部にあり、外部メモリ435は標準的にプロセッサの外部にある。しかしながら、種々の実施形態では、キャッシュ・メモリ416及び/又は外部メモリ435のそれぞれは、プロセッサの内部又は外部にあってもよい。外部メモリ435は、例えば202、204、110又は他のメモリを有し又はそれらに類似していてもよい。
【0026】
収集処理は、(例えば、外部メモリ435内の)2以上の不連続な記憶域422及び424からデータを読み出し、該データを宛先レジスタ415のようなレジスタ・メモリに隣接して格納する。データの宛先レジスタ415への収集の状態は、マスク・レジスタ410に記録されるか又は書き込まれる。同様に、分散処理は、宛先レジスタ415のようなレジスタ・メモリからデータを読み出し、(例えば、外部メモリ435内の)2以上の不連続な記憶域422及び424に該データを格納する。データの宛先レジスタ415への分散の状態は、マスク・レジスタ410に記録されるか又は書き込まれる。
【0027】
レジスタ・メモリ(例えば、宛先、マスク及び/又は他のレジスタ・メモリ)は、標準的にプロセッサ内の比較的小さい記憶空間であってもよい。レジスタ・メモリの内容は、プロセッサの他の記憶ユニット内に格納された内容よりも迅速にアクセスされる。宛先レジスタ415(例えば、ロード・レジスタ)は、カウンタ機械、ポインタ機械、ランダム・アクセス機械(RAM)、ランダム・アクセス・プログラム内蔵機械(RASP)又は他のメモリであてもよい。マスク・レジスタ410(例えば、シャドウ・レジスタ)は、「0」及び「1」のフラグ又は値を保持し、宛先レジスタ415の状態又は記憶容量をシャドウイング又はトラッキングするデータ・フィールド、エレメント又はプレースホルダを有する。
【0028】
収集及び分散処理は、特に広範に分散されたデータ・エレメントを有するアプリケーションで、データ・エレメントにアクセスするために実施されてもよい。分散されたデータ・エレメントは、例えば宛先レジスタ415内の連続するように又は単一の場所に格納するために集められ、及び/又は2以上の不連続な記憶域に分散されてもよい。ある実施形態では、収集命令は、(例えば、キャッシュ・メモリ416及び/又は外部メモリ435内の)2以上の不連続な記憶域422及び424からの各データ・エレメントを、宛先レジスタ415へ読み出し、コピーし、複製し、転送し又は連続的に書き込む。また、分散命令に関してはこの逆である。このような収集処理は、データ・エレメントの「パッキング」及び/又は宛先レジスタ415の「パッキング」として表される。データ・エレメントを単一の場所(例えば宛先レジスタ415)にパッキングすることにより、プロセッサ(例えば、図1及び2)は、データを読み出し、処理し、監視し又はその他の場合には最小サイクル数(例えば、1サイクル)でデータに処理を実行するために同時に調和して及び/又は順々に集合的に使用する。
【0029】
場合によっては、不連続記憶域へのアクセスの試みはそれぞれの処理の進捗を遅らせるので、収集及び/又は分散処理は割り込みされうる。いくつかの実施形態では、収集及び/又は分散処理の状態は保存される。従って、処理が再開されるとき、収集及び/又は分散処理全体を繰り返す必要がない。例えばマスク・レジスタ410に収集又は分散された及びされていないデータ・エレメントのレコードを格納することは、割り込みの時点から処理を継続することを可能にする。
【0030】
収集処理は、2以上の連続又は不連続記憶域からの(例えば、16個の)データ・エレメントのセットのそれぞれを、キャッシュ・メモリ416及び/又は外部メモリ435に収集してもよい(例えば、読み出す又はアクセスする)。収集処理は、キャッシュ・メモリ416内のキャッシュ・ラインへのポインタを入力として用いるか又は有する。データがキャッシュ・ラインの境界に跨って広がっているとき、又はキャッシュ・ライン・アドレスが提供されるとき、収集処理は、外部メモリ435からデータを読み出すが、これは比較的長時間を要しうる。データ・エレメント毎に、収集処理はキャッシュ・メモリに向けられる。そして、収集が不成功の場合、収集処理は外部メモリ435からのデータへのアクセスに進む。幾つかの実施形態では、処理は、キャッシュ・メモリ416をスキップし、外部メモリ435への直接アクセスに進む。
【0031】
収集処理は、データ・エレメントを宛先レジスタ415(例えば、ロード・レジスタ)に格納又はパッキングする。宛先レジスタ415は、例えば単一の収集処理に用いられる複数の(例えば16個の)別個のデータ・エレメントを有する。宛先レジスタ415内のデータ・エレメント又はベクトルは、データ・エレメントが読み出されたメモリからコピーされたデータ、及び/又はデータ・エレメントが読み出された記憶域へのポインタを有する。
【0032】
収集処理は、外部メモリ435435にアクセスする前に、キャッシュ・メモリ416、ローカル・メモリ又はプロセッサ内部のメモリにアクセスして各データ・エレメントを読み出すか取り出す。データ・エレメントは、キャッシュ・メモリ416内に、メモリ・ページ又は他のメモリの単位で配置される。データ・エレメントは、メモリ内(例えば、連続記憶域418、420)、或いは不連続の又は隣接しない場所(例えば、不連続記憶域422、424)にパッキングされる。標準的に、収集処理は、2以上のデータ・エレメントが不連続な又は隣接しない記憶域422及び424に格納されているときに用いられる。データ・エレメントは、バイト(例えば、8ビット)、ワード(例えば、2バイト)、ダブル・ワード(例えば、32ビット)、又は他の大きさ又はデータの単位であってもよい。
【0033】
収集処理のレートは、収集されるエレメントのコヒーレンスのレベルに依存する。例えば、収集されるエレメントのコヒーレンスのレベルは、例えばキャッシュ・メモリ416内にデータ・エレメントが格納される異なるキャッシュ・ラインがどれだけ多くあるかの指標である。大きいコヒーレンスで格納された(例えば、キャッシュ・メモリ416内に少ないキャッシュ・ラインを用いて格納された)エレメントほど、少ない時間で又は少ない動作サイクルで収集されるか又は取り出される。例えば、全てのデータ・エレメントが完全にコヒーレントであるとき(例えば、同一のキャッシュ・ラインにあるとき)、収集処理は、単一の周期でデータを取り出す。しかしながら、収集されたエレメントは完全にコヒーレントでなくてもよい。例えば、エレメントは、幾つかの(例えば、2又は3個の)キャッシュ・ラインに広がってもよく、従って(例えば、レベル1(L1)又は中央演算処理装置(CPU)の)キャッシュ・メモリ416への何回かの(例えば、2又は3回の)アクセスで収集されてもよい。
【0034】
宛先レジスタ415は、ベクトル・レジスタ、ロード・レジスタ又は2以上の隣接しない記憶域からのアクセス又は収集されたデータを一時的に格納又はパッキングするための他のレジスタ・メモリであってもよい。例えば、データのセット(例えば16個のベクトル)では、宛先レジスタ415は収集処理の宛先であってもよく、キャッシュ・メモリ416及び/又は外部メモリ435はソースであってもよい(例えば、連続418及び420、又は不連続422及び424であってもよい)。
【0035】
図5は、収集命令がデータ・エレメントのセット(例えば、512ビットSIMDで最大16個の32ビット又は8個の64ビット浮動小数点データ・エレメント)を条件付きでロードし、それらを宛先レジスタ515にパッキングする一実施形態を示す。エレメントは、汎用レジスタ525に渡された基準アドレス520、immediateとして渡されたスケール530、SIMDレジスタとして渡されたインデックス・レジスタ510(パッキングされたインデックスを保持している)、及び任意の変位(示されない)により指定される。データ・エレメントは、それらの対応するマスク・ビットが1の場合にのみロードされる。本実施形態のマスク・レジスタは、専用のマスク・レジスタである。代案として、マスク・レジスタはSIMDレジスタであってもよく、エレメントのマスク・ビットはマスク・レジスタからの対応するエレメントの符号ビットである。マスク・エレメントは、インデックス・エレメントと同一の大きさとして扱われる。エレメントのマスク・ビットが設定されていない場合、宛先レジスタ(SIMDレジスタ)の対応するエレメントは変更されないままである。収集処理が完了すると、マスク・レジスタ全体は、収集命令の実行が例外により割り込まれない限り、該収集命令によりゼロに設定される。
【0036】
一実施形態では、所定のデータ・セットを収集する収集処理が完了する前に終了されたとき、宛先レジスタ515は、既に集められたデータ(例えば、所定のデータ・セットのうちの一部のサブセット)を一時的に格納又は保護する。
【0037】
以下の擬似コードは、本願明細書に記載された処理の例証的な例を有する。他の擬似コード、言語、処理、処理の順序、及び/又は数が用いられてもよい。
【0038】
以下の擬似コードは、収集命令(例えば、「vgather」と記される)がどのように動作するかの例を示す。
【0039】
【表1】

図6は、分散命令が、ソースのLSBからMSBまでの如何なる重複する宛先記憶域への書き込みを指示しながら、ソースSIMDレジスタ615からのエレメントのセットを条件付きで格納する一実施形態を示す。宛先記憶域616、618、620及び622は、収集命令について上述したように指定される。エレメントは、それらの対応するマスク・ビットが1の場合にのみ格納される。マスク・レジスタ全体は、収集命令の実行が例外を引き起こさない限り、収集命令の実行によりゼロに設定される。この命令は、(まさに上述の収集命令のように)少なくとも1つのエレメントが既に分散されている場合に、例外によりサスペンドされうる。幾つかの実施では、重複する宛先の場所への書き込みのみが、(ソース・レジスタのLSBからMSBまで)互いに対して順序付けられることが保証される。重複は次のように決定される。各エレメントは、バイト大の場所のセットに対応する。[(インデックス×スケール):(インデックス×スケール+データ・エレメントの大きさ−1)]である。2つの異なるエレメントからの任意の2つの場所が同一である場合、エレメントは重複する。重複しない書き込みは、任意の順序で生じうる。幾つかの実施形態では、2以上の宛先の場所が完全に重複している場合、「先の」書き込みがスキップされてもよい。幾つかの実施形態では、エレメントは、(如何なる重複もない場合には)任意の順序で分散されてもよいが、フォルトは右から左への順に配信されなければならない。
【0040】
以下の擬似コードは、分散命令(例えば、「vscatter」と記される)がどのように動作するかの例を示す。
【0041】
【表2】

図4を再び参照すると、分散/収集プリフェッチ命令(例えば、vscatterpf及びvgatherpf)は、vgather命令と同様に定められてもよい。しかし、データを宛先レジスタ415にロードする代わりに、データを有するキャッシュ・ラインがキャッシュ・メモリ416にプリフェッチされてもよい。一実施形態では、キャッシュ・ミスのペナルティを受けるのを回避するために、データは、収集又は分散される前に、最初にキャッシュ・メモリ416にプリフェッチされる。幾つかの実施形態では、命令は、データがどのレベルのキャッシュにプリフェッチされるべきかに関するヒントを得る。収集プリフェッチは、プリフェッチされているデータが次に読み取られる(書き込みとは対照的に)ヒントを伝えてもよい。分散プリフェッチは、プリフェッチされているデータが次に書き込まれるヒントを伝えてもよい。一実施形態では、収集及び/又は分散プリフェッチ命令は、マスク・レジスタを変更しない。前方への進捗を保証するため、本実施形態では、この命令は、例外でサスペンドせず、ページ・フォルトを配信しない。
【0042】
収集及び/又は分散処理は、種々の理由で停止又は割り込まれうる。例えば、コンテキスト切り替え装置は、(例えば、2以上の複数のタスク間でプロセッサの状態又はコンテキストを変更するために)レジスタ・コンテキスト、タスク・コンテキスト、又は処理コンテキストを切り替えうる。別の実施形態では、1以上のより正確な例外が指定された処理を妨げるか又は遅延させるとき(例えば、オペレーティング・システム(OS)の許容ページ・フォルト又はキャッシュ・ページ・ミスの最大数又は限度にあたったとき)、及び/又は処理に割り当てられた時間が終了したとき、処理は停止又は割り込まれうる。更に別の実施形態では、収集/分散処理は、処理がより高い優先度の処理により置き換えられたとき、停止又は割り込まれうる。
【0043】
収集及び/又は分散処理は、例えばシステム内の問題のある記憶域からデータを取り出そうとしてページ・フォルトを生じるとき、妨げられうる。ページ・フォルトのような幾つかのフォルト状態は、プログラムのフローがフォルトになっている命令を再開でき、同時に対応する命令セットの前方への進捗を保証するように、処理される。一実施形態では、メモリ・ページは、宛先レジスタ415と外部メモリ435、ハード・ドライブ若しくはディスクのような他のメモリとの間の転送の単位として用いられる固定長ブロックのキャッシュ・メモリ416を有する。ページ・フォルトは、収集又は分散処理がアドレス空間にマッピングされたメモリ・ページにアクセスしたが、物理的にロードできない若しくはキャッシュ・メモリ416内で利用可能でないとき、割り込み(例えば、又は例外)を有する。例えば、キャッシュ・メモリ416から収集されている各データ・エレメントは、ページ・フォルトを引き起こし、メモリ・ページの境界に渡る各エレメントは2つのページ・フォルトを引き起こしうる。
【0044】
一実施形態では、システムは、例えばページ・フォルトに遭遇したような許容される例外の最大数(例えば、16以上)にあたったとき、特定の処理を停止するか又は割り込む。例えば、OSは、1つの処理に対して、キャッシュ及び/又はページ・ミス若しくはフォルトの限度を有してもよい。OSは、ページ・フォルトを処理するために例外処理ソフトウェアを有してもよい。また、プロセッサは、ページ・フォルトを検出するためにメモリ管理ユニットを有してもよい。他の例外処理機構が用いられてもよい。
【0045】
ページ・フォルトに遭遇したとき、システムは、ページ・フォルトを処理するために、収集及び/又は分散処理を処理の途中で停止してもよい。処理が繰り返されページ・フォルトに繰り返し遭遇したとき、処理により行われた進捗が廃棄された場合、収集/分散処理は少しも前へ進めない。
【0046】
キャッシュ・メモリ416及び/又は外部メモリ435から収集されたデータを宛先レジスタ415に格納することは、完全な収集処理(例えば16個全てのベクトルを収集すること)が完了前に割り込まれ、失敗又は終了した場合にデータを保護する。特に、データ・エレメントが例外を生成する場合、これらの命令は、例外を配信する前にエレメントのサブセットを更新する(つまり、収集処理ではマスク・レジスタ及び宛先レジスタ、又は分散処理ではメモリが、例外が配信される前に書き込まれたエレメントのサブセットを有する)。収集されているデータ・エレメントを宛先レジスタ415に格納することにより、割り込まれた又は停止された収集処理により以前に集められたデータは保護され、割り込みの前に処理が以前に終了した場所で収集処理が再開する。割り込まれた収集処理(例えば、収集された1以上のデータ・エレメントを有する)は、宛先レジスタ415に欠けている残りのエレメントを収集し始めてもよい。
【0047】
収集命令の場合、同一のアーキテクチャのレジスタが入力と出力の両方として用いられる場合、出力レジスタが例外のときに部分的に更新されうるので、及びインデックスがデータ・エレメントと異なる大きさになりうるので、幾つかの入力状態は失われうる。幾つかの実施形態では、命令で指定されたインデックス及び/又はマスク・レジスタが宛先レジスタと同一の場合、収集命令はフォルトを配信し、命令の入力データが失われるのを防ぐ。
【0048】
幾つかの実施形態では、データ・エレメントは、任意の順序でメモリから読み出されてもよい。一方で、フォルトは、宛先レジスタ415内のデータ・エレメントの順序に関しては、右から左へ(つまり、LSBからMSBへ)の順で配信される。少なくとも1つのエレメントが既に収集されている場合(つまり、例外が、一番右のエレメント以外の、マスク・ビットのセットされているエレメントにより引き起こされた場合)、収集命令は例外によりサスペンドされうる。フォルトがエレメントにより引き起こされ、配信される場合、宛先レジスタ415のLSBに近い全てのエレメントは、フォルトにならない場合に宛先レジスタ内に収集され、それらのマスク・ビットは更新される。宛先レジスタ415のMSBに近いデータ・エレメントは、収集されてもされなくてもよい。所与のデータ・エレメントが複数のフォルトを引き起こす場合、それらは従来の順序で配信される。従って、収集処理が割り込まれるとき、宛先レジスタおよびマスク・レジスタは部分的に更新され、収集されたエレメントは宛先レジスタ内に置かれそれらのマスク・ビットはゼロに設定される。
【0049】
幾つかのアプリケーションでは、特にソフトウェアをコーディング及び/又はデバッグしている間、データ中断点(ブレークポイント)は、変数の値が変化するときに又は変数が参照されるときに、プログラムの例外を止めるために用いられてもよい。収集又は分散命令がデータ中断点及び例外の両方を引き起こす場合、従来のアーキテクチャは例外を配信し、データ中断点は失われるだろう(何故なら、命令は、アーキテクチャの状態を部分的に更新し、中断点を引き起こしたロード/格納をやり直さないからである)。例外がある場合にもデータ中断点を確実に配信するために、例外が引き起こされたときにトラップが保留されている場合に、命令は(フォルトしているエレメントの直ぐ右の処理で)サスペンドされてもよい。これは、データ中断点がトラップとして扱われ、一方で例外がフォルトとして処理されるので、データ中断点が全て使用可能にされることを保証する。この仕組みでは、如何なるデータ中断点も失われず、前方への進捗が保証される(フォルト・ハンドラがフォルト状態をクリアすると仮定する)。この仕組みは、繰り返される文字列操作のために用いられる仕組みとは異なる。例えば、文字列操作は、トラップと例外の両方によりサスペンドされうる。トラップだけでは、これらの収集/分散命令をサスペンドしない(その代わり、如何なる例外も存在しない場合、殆どの他の命令と同様に、トラップは命令実行の終わりに配信される)。
【0050】
幾つかの実施形態では、任意のトラップ又は割り込みが既に収集されたエレメントから保留している場合、それらは例外の代わりに配信されるだろう。この場合、フラグ・ビット、例えばEFLAG.RFは1に設定されてよく、実行が続けられるとき命令中断点は再び引き起こされない。
【0051】
幾つかの実施形態では、マスク・レジスタ410は、データ・エレメントの所定のセットの収集及び宛先レジスタ415のパッキングを監視及び/又は制御するために実施される。マスク・レジスタ410は、シャドウ・レジスタ、制御レジスタ、フラグ・レジスタ、汎用レジスタ、SIMDレジスタ、又は他の適切なレジスタであってもよい。マスク・レジスタ410は、宛先レジスタ415に格納されたデータを示し、従って収集処理の完了を追跡するために用いられてもよい。一実施形態では、宛先レジスタ415内に格納されたデータ・エレメントとマスク・レジスタ410内に格納された対応する状態エレメントとの間に、1対1の対応が存在する。状態エレメント又は値は、フラグ、マーカ、タブ、指標、信号、及び/又は他の数、(例えば、対応する又は指し示されたレジスタ位置の)対応するデータ・エレメントが宛先レジスタ415内に格納されているか否かを示すビット及び/又はコード例えば、マスク・レジスタ410内の「1」は、対応するデータ・エレメントが宛先レジスタ415内に書き込まれなかったことを示してもよい。他の場合には「0」が用いられてもよい。他の数又はフラグが用いられてもよい。
【0052】
一実施形態では、プロセッサは、1つの記憶域セットに対して単一の命令を用いて、収集及び/又は分散処理を一度呼び出してもよい。収集処理は、全てのデータ・エレメントが収集されるまで及び/又はレジスタ状態エレメントの合計値がゼロになるまで、実行又はランしてもよい。如何なる大きさの(例えば、任意の数の収集されたエレメント又は命令に対して)満たされた又はパッキングされた宛先レジスタ415も、(例えば、宛先レジスタ415の大きさに拘わらず)処理の完了後に空の又はゼロのマスク・レジスタ410を生じるので、マスク・レジスタ410は、如何なる大きさの宛先レジスタ415(例えば、如何なる数の収集されたエレメント)のパッキングを監視するために用いられてもよい。例えば、任意の数の「0」状態エレメントの累計は、常に0である。従って、マスク・レジスタ410は、種々の数のデータ・エレメントの宛先レジスタ415内へのパッキング又は収集を監視するために用いられてもよい。
【0053】
幾つかの実施形態では、転送の完了を表すために、他のマスク値が用いられてもよい。例えば、代替の実施形態では、マスク・レジスタ410内の「1」は、対応するデータ・エレメントが宛先レジスタ415内に書き込まれたことを示してもよい。他の場合には、マスク・レジスタ415は対応するマスク位置に「0」を格納する。このような実施形態では、収集命令は、マスク・レジスタ410内の状態エレメントの値の合計が所定の閾、例えば収集されるべきデータ・エレメントの数に等しくなるまで実行してよい。該閾は収集命令毎に変化してもよい。幾つかの実施形態では、指定された処理は、マスク・レジスタ410内のマスク・エレメントに対する論理処理(例えば、AND又はOR)が所定の値(例えば、「0」又は「1」)を生じるまで実行される。
【0054】
一実施形態では、収集及び/又は分散命令は、フラグがマスク・レジスタ410がクリアされた、ゼロ又は他の所定値(例えば、収集命令に対して収集されるべきエレメントの数)になるまで、実行する。一実施形態では、処理が完了したとき、完了マスクが信号で伝えられるか又はフラグで知らせる。
【0055】
一実施形態では、各処理サイクルで、収集命令は、異なるキャッシュ・ラインを(例えばL1)キャッシュ・メモリ416から読み出し、読み出したキャッシュ・ラインに対応する宛先レジスタ415内の最大数のエレメントを満たす。例えば、読み出したキャッシュ・ラインが収集されるべき1つのエレメントを有する場合、1つのエレメントは、宛先レジスタ415内に書き込まれ、マスク・レジスタ410内の対応する1つのビット状態エレメントが「0」に設定されてもよい。幾つかの実施形態では、デュアル又はマルチ・ポートキャッシュ・メモリ416及び/又は外部メモリ435が用いられるとき、プロセッサは、サイクル毎に1より多いデータ・エレメントを収集する。この場合には、データ・エレメントの所定のセットを収集する収集処理は、より少ないサイクル又は繰り返しで実行する。
【0056】
効率的な収集処理は、マイクロコード及び/又はハードウェア機構の組み合わせを用いてシステム内で実施されてもよい。一実施形態では、プロセッサは、所定のデータ・セットが宛先ベクトル・レジスタ・メモリ415内に完全に収集されるまで、収集処理を続けてもよい。
【0057】
本願明細書に開示された命令の実施に関与する計算の幾つかの特徴は、次を含む。(1)基準アドレス、インデックス、スケール及び変位を用いたアドレスの生成、(2)データ・エレメントのロード/格納、及び(3)データ・エレメントの宛先/ソース・レジスタからのパッキング/パッキング解除。一連の実施形態は、ソフトウェア・エミュレーション、既存のuopを用いたマイクロコード、新たなuopを用いたマイクロコード(つまり、命令の当該部分のための特別なハードウェア支援)及び有限状態機械(FSM)を含むこれらのそれぞれに対して可能である。
【0058】
図7を参照すると、パッキング/パッキング解除のための、アドレス収集を支援する有限状態機械、及び読み込み/格納のためのマイクロコードを有するこれらの計算を提供する一実施形態が示される。段階710で、インデックス・レジスタ及びマスク・レジスタ(及び分散ではソース・レジスタ)は、命令のために資源を割り当てこれらのレジスタのコピーを格納する収集/分散FSMへ送られる。示された実施形態のマスク・レジスタはSIMDレジスタであるが、マスクは、例えば専用マスク・レジスタ、汎用レジスタ等を含む他の記憶場所からFSMへ提供されてもよい。段階720で、SIMD幅特有ロード/格納uopのセットは、プロセッサにより実行される。これらの特有ロード/格納uopに対し、アドレス生成ハードウェアは、汎用レジスタから基準アドレスを、(ロード/格納uop毎に1つのエレメントのインデックスを送信する)収集/分散FSMからインデックスを受信する。分散では、FSMはまた、格納uop毎にソース・レジスタからデータ・エレメントを送信する。収集では、メモリは、ロードuop毎に、ハードウェアがFSMへ送信するデータ・エレメントを返す。幾つかの実施形態では、分散処理のソースは、キャッシュ・ライン又は他の記憶場所である。また、ハードウェアは、スケール値及び幾つかの実施形態では変位値を、通常のロード/格納のために用いられるのと同一の機構を介して、アドレス生成ロジックに提供する。段階730で、FSMは、更新されたマスク値を、レジスタ・ファイルに書き戻す(また、収集では、FSMは宛先値も書き込む)。代替の実施形態は、3つの計算の全てを実行するために収集/分散FSMを用いてもよく、従ってロード/格納uopを用いなくてもよい。
【0059】
ロード/格納処理が通常のロード及び格納を用いて実行された場合、実装は、データ・エレメントと同じく多くのロード/格納を必要とするだろう。従って、実施は、全てのデータ・エレメントに渡るループ(例えば、ソフトウェア・ループ、マイクロコード・ループ又は状態機械の「ループ」)を有してもよく、又はループに依存しなくてもよい(例えば、マイクロコード内のSIMD幅ロード/格納uopのセット)。更に、幾つかの実施形態は、幾つかの又は全ての処理に対して同時に処理を実行するよう構成されてもよい。
【0060】
幾つかの実施形態は、より良好な性能を提供すると予測されたものを動的に選択するための複数の実施及び機構を有してもよい。幾つかの実施では、性能は、収集/分散命令により作用されたキャッシュ・ラインの数に依存する。例えば、収集の1つの可能なマイクロコードの実施は、複数のエレメントのうちの1つが存在するキャッシュ・ラインをロードし該ラインにある全ての他のエレメントを抽出するuopについてのループを有する。このような実施は、エレメントが少ない数のキャッシュ・ラインに存在するときほど速い。この実施が多数のキャッシュ・ラインに作用する必要がある場合、一度に単に1つのデータ・エレメントをロードする(ループを有さない)単純な実施は、より速い。ループを有する実施は、ループuopからのオーバーヘッドを招く。従って、一実施形態は、良好に実行すると期待される実施を選択する予測と共に、両方の実施を有してもよい。
【0061】
図8は、予測ビットを用いて、収集又は分散処理を実行するときにどの2つの実施が用いられるべきかを制御する一実施形態による収集/分散FSMの一例を示す。予測は、静的収集/分散命令毎に単一ビットを有するインデックス付けされた命令ポインタのテーブル(「IP(Instruction Pointer)インデックス・テーブル」)である。一実施形態では、ビットは、Nサイクル毎に全てクリアされる。代替の実施形態では、実施内のロジック840は、どれだけ多くのキャッシュ・ラインが作用されるかを計数し、作用されたキャッシュ・ラインの数が閾より低い場合に該ロジックは対応するビットをクリアしてもよい。実施中、収集/分散が実行されるとき810、テーブル内のビットがクリアされた場合820、ハードウェアはループの実施を用いる830(その他の場合、ハードウェアは他の実施を用いる840)。ループの実施を用いるとき830、命令が特定の閾より多い数のキャッシュ・ラインに作用する場合850、ハードウェアは該命令のために予測ビットを設定する860。従って、ハードウェアは、次回に収集/分散命令が実行されるとき、ループのない実施を用いるよう選択するだろう。
【0062】
実施形態は、プロセッサ又はコントローラにより実行されると本願明細書に記載された方法を実行する命令を有する又は格納された例えばメモリ、ディスク・ドライブ又はユニバーサル・シリアル・バス(USB)フラッシュ・メモリ、又は図1及び2に示された種々の記憶及びメモリ装置のようなコンピュータ可読媒体を有してもよい。
【0063】
多数の実施形態、実施及び例が記載された。しかしながら、理解されるべき点は、本発明の精神及び範囲から逸脱することなく種々の変更が行われうることである。例えば、収集及び分散処理は、メモリとレジスタとの間とは対照的に、記憶域間(つまり、キャッシュ・ライン間、キャッシュ・レベル間、及び/又は内部メモリと外部メモリとの間)で実行されてもよい。更に、収集及び分散処理は、2以上のレジスタ間で実行されてもよい。従って、他の実施形態も本発明の範囲に包含される。
【符号の説明】
【0064】
106 システム・バス
110 システム・メモリ
114 I/O装置
122 キーボード、マウス
124 音声I/O
126 通信装置
128 データ記憶装置
130 コード
132、118 バス・ブリッジ
134 メモリ制御部
138 高性能グラフィックス
140、160 プロセッサ
142、162 キャッシュ
144、164、108、112 バスI/F
202、204 メモリ
214 I/O装置
218 バス・ブリッジ
222 キーボード/マウス
224 音声I/O
226 通信装置
228 データ記憶装置
230 コード
238 高性能グラフィックス
270、280 プロセッサ
274、284 プロセッサ・コア
290 チップセット
410 マスク・レジスタ
416 キャッシュ・メモリ
435 外部メモリ
514 ソース/宛先レジスタ

【特許請求の範囲】
【請求項1】
複数の記憶域にあるデータ・エレメントにアクセスするための単一の命令をデコードするデコーダ・ステージ、
前記デコーダに結合され、デコードされた命令を受信し該デコードされた命令に応答する1又は複数の演算実行部であって、
前記複数の記憶域のうちの1又は複数へのアクセスを与え、
フォルト又は例外が生じたかどうかを検出し、
前記単一の命令の完了又はフォルト若しくは例外の検出があると、保留中のトラップ又は中断を処理する、1又は複数の演算実行部、
を有するプロセッサ。
【請求項2】
前記1又は複数の演算実行部は、更に、
トラップ又は中断が生じたかどうかを検出し、
検出したトラップ又は中断を保留中のトラップ又は中断として記録する、
請求項2に記載のプロセッサ。
【請求項3】
トラップ又は中断が生じたかどうかの検出は、ブレークポイントの検出を含む、請求項2に記載のプロセッサ。
【請求項4】
前記1又は複数の演算実行部は、更に、
トラップ又は中断の前記処理に応答してフラグを設定する、
請求項3に記載のプロセッサ。
【請求項5】
前記1又は複数の演算実行部は、更に、
前記フラグが設定されているときは、前記単一の命令の完了又はフォルト若しくは例外の検出により保留中のブレークポイントを処理しない、
請求項4に記載のプロセッサ。
【請求項6】
前記フラグはEFLAG.RFである、請求項5に記載のプロセッサ。
【請求項7】
前記1又は複数の演算実行部は、更に、
前記データ・エレメントを宛先レジスタに格納し、
マスク・レジスタ内の対応する状態エレメントをクリアする、
請求項2に記載のプロセッサ。
【請求項8】
前記1又は複数の演算実行部は、更に、
前記データ・エレメントをアドレス可能なメモリの複数の記憶域に格納し、
マスク・レジスタ内の対応する状態エレメントをクリアする、
請求項2に記載のプロセッサ。
【請求項9】
複数の記憶域にあるデータ・エレメントにアクセスするための単一の命令をデコードするデコーダ・ステージ、
前記デコーダに結合され、デコードされた命令を受信し該デコードされた命令に応答する1又は複数の演算実行部であって、
前記複数の記憶域のうちの1又は複数へのアクセスを与え、
トラップ又は中断が生じたかどうかを検出し、
検出したトラップ又は中断を保留中のトラップ又は中断として記録し、
フォルト又は例外が生じたかどうかを検出し、
前記単一の命令の完了又はフォルト若しくは例外の検出があると、保留中のトラップ又は中断を処理する、1又は複数の演算実行部、
を有するプロセッサ。
【請求項10】
トラップ又は中断が生じたかどうかの検出は、ブレークポイントが生じたかどうかの検出を含む、請求項9に記載のプロセッサ。
【請求項11】
前記1又は複数の演算実行部は、更に、
トラップ又は中断の前記処理に応答してフラグを設定する、
請求項9に記載のプロセッサ。
【請求項12】
前記フラグはEFLAG.RFである、請求項11に記載のプロセッサ。
【請求項13】
前記1又は複数の演算実行部は、更に、
前記データ・エレメントを宛先レジスタに格納し、
マスク・レジスタ内の対応する状態エレメントをクリアする、
請求項10に記載のプロセッサ。
【請求項14】
前記1又は複数の演算実行部は、更に、
前記データ・エレメントをアドレス可能なメモリの複数の記憶域に格納し、
マスク・レジスタ内の対応する状態エレメントをクリアする、
請求項10に記載のプロセッサ。
【請求項15】
複数の記憶域にあるデータ・エレメントにアクセスするための単一の命令をデコードするステップ、
1又は複数の演算実行部において、デコードされた命令を受信するステップであって、該デコードされた命令の受信に応答して、
前記複数の記憶域のうちの1又は複数へのアクセスを与え、
フォルト又は例外が生じたかどうかを検出し、
前記単一の命令の完了又はフォルト若しくは例外の検出があると、保留中のトラップ又は中断を処理する、ステップ、
を有する方法。
【請求項16】
前記デコードされた命令の受信に応答して、更に、前記1又は複数の演算実行部は、
トラップ又は中断が生じたかどうかを検出し、
検出したトラップ又は中断を保留中のトラップ又は中断として記録する、
請求項15に記載の方法。
【請求項17】
トラップ又は中断が生じたかどうかの検出は、ブレークポイントの検出を含む、請求項16に記載の方法。
【請求項18】
前記デコードされた命令の受信に応答して、更に、前記1又は複数の演算実行部は、
トラップ又は中断の前記処理に応答してフラグを設定する、
請求項17に記載の方法。
【請求項19】
前記デコードされた命令の受信に応答して、更に、前記1又は複数の演算実行部は、
前記フラグが設定されているときは、前記単一の命令の完了又はフォルト若しくは例外の検出により保留中のブレークポイントを処理しない、
請求項18に記載の方法。
【請求項20】
前記フラグはEFLAG.RFである、請求項19に記載の方法。
【請求項21】
前記デコードされた命令の受信に応答して、更に、前記1又は複数の演算実行部は、
前記データ・エレメントを宛先レジスタに格納し、
マスク・レジスタ内の対応する状態エレメントをクリアする、
請求項19に記載の方法。
【請求項22】
前記デコードされた命令の受信に応答して、更に、前記1又は複数の演算実行部は、
前記データ・エレメントをアドレス可能なメモリの複数の記憶域に格納し、
マスク・レジスタ内の対応する状態エレメントをクリアする、
請求項19に記載の方法。
【請求項23】
複数の記憶域に結合されたメモリ制御部、
前記メモリ制御部に結合されたプロセッサ、
を有し、前記プロセッサは、
前記複数の記憶域にあるデータ・エレメントにアクセスするための単一の命令をデコードするデコーダ・ステージ、
前記デコーダに結合され、デコードされた命令を受信し該デコードされた命令に応答する1又は複数の演算実行部であって、
前記複数の記憶域のうちの1又は複数へのアクセスを与え、
フォルト又は例外が生じたかどうかを検出し、
前記単一の命令の完了又はフォルト若しくは例外の検出があると、保留中のトラップ又は中断を処理する、1又は複数の演算実行部、
を有する、
システム。
【請求項24】
前記1又は複数の演算実行部は、更に、
トラップ又は中断が生じたかどうかを検出し、
検出したトラップ又は中断を保留中のトラップ又は中断として記録する、
請求項23に記載のシステム。
【請求項25】
トラップ又は中断が生じたかどうかの検出は、ブレークポイントの検出を含む、請求項24に記載のシステム。
【請求項26】
前記1又は複数の演算実行部は、更に、
前記データ・エレメントを宛先レジスタに格納し、
マスク・レジスタ内の対応する状態エレメントをクリアする、
請求項25に記載のシステム。
【請求項27】
前記1又は複数の演算実行部は、更に、
前記データ・エレメントをアドレス可能なシステムの複数の記憶域に格納し、
マスク・レジスタ内の対応する状態エレメントをクリアする、
請求項25に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2013−80490(P2013−80490A)
【公開日】平成25年5月2日(2013.5.2)
【国際特許分類】
【出願番号】特願2012−261129(P2012−261129)
【出願日】平成24年11月29日(2012.11.29)
【分割の表示】特願2010−273399(P2010−273399)の分割
【原出願日】平成22年12月8日(2010.12.8)
【出願人】(593096712)インテル コーポレイション (931)
【Fターム(参考)】