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

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

Info

Publication number
JP5148680B2
JP5148680B2 JP2010273399A JP2010273399A JP5148680B2 JP 5148680 B2 JP5148680 B2 JP 5148680B2 JP 2010273399 A JP2010273399 A JP 2010273399A JP 2010273399 A JP2010273399 A JP 2010273399A JP 5148680 B2 JP5148680 B2 JP 5148680B2
Authority
JP
Japan
Prior art keywords
data
storage
data elements
execution
single instruction
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.)
Active
Application number
JP2010273399A
Other languages
English (en)
Other versions
JP2011134318A (ja
Inventor
ヒューズ クリストファー
チェン イエン−クワーン
ボム マヤンク
ダブリュー. ブラント ジェイソン
ジェイ. バクストン マーク
ジェイ. チャーニー マーク
チェヌパティ スリニヴァス
コルバル ヘスス
ジー. ディクソン マーティン
ビー. ガーカー ミリンド
シー. ホール ジョナサン
サイトー イドー ヒデキ
ラヒナー ペーター
ナイガー ギルバート
ジェイ. ニューバーン クリス
エス. パルタサラティ ラジェシュ
エル. トール ブレット
ヴァレンタイン ロバート
ジー. ウィーデンメイアー ジェフリー
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2011134318A publication Critical patent/JP2011134318A/ja
Application granted granted Critical
Publication of JP5148680B2 publication Critical patent/JP5148680B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/30018Bit or string instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Description

本開示は、プロセッサの分野に関する。
マルチメディア・アプリケーション及び同様の特性を有する他のアプリケーションの効率を向上させるために、単一命令複数データ(Single Instruction,Multiple Data:SIMD)アーキテクチャがマイクロプロセッサ・システムで実施され、1つの命令で幾つかのオペランドを並列して操作することを可能にしている。特に、SIMDアーキテクチャは、多くのデータ・エレメントを1つのレジスタ又は連続する記憶域に詰め込むことを利用している。ハードウェアを並列に実行すると、1つの命令により複数の処理が別個のデータ・エレメントに対して実行され、標準的には有意な性能の利益をもたらす。
SMIDの性能向上は、不規則なメモリ・アクセス・パターンを含むアプリケーションでは達成するのが困難でありうる。例えば、連続する記憶域に格納されてもされなくてもよいデータ・エレメントの頻繁且つ無作為な更新を必要とするデータ・テーブルを格納するアプリケーションは、標準的に、SIMDハードウェアを十分に利用するために、データの再配置を要求する。このデータの再配置は、大量のオーバーヘッドをもたらすので、SIMDハードウェアにより達成される効率を制限してしまう。
SIMDのベクトル幅は増大し(つまり、単一の処理が実行されるデータ・エレメントの数)、アプリケーション開発者(及び編集者)は不連続なメモリ記憶装置内に格納された再構成データ・エレメントに関連付けられたオーバーヘッドのためにSIMDハードウェアを十分に利用することが益々困難であると分かる。
本発明は、複数のデータ・エレメントの収集及び分散に関する。
本発明の1又は複数の実施形態の詳細は、添付の図面及び以下の説明に記載される。他の特徴、目的及び利点は、説明、図面、及び特許請求の範囲から明らかであろう。
コンピュータ・システムの概略図である。 コンピュータ・システムの概略図である。 プロセッサ・パイプラインのブロック図である。 システム内のデータ・フローの概略図である。 分散処理のデータ・フローの例を示す。 集中処理のデータ・フローの例を示す。 パッキング/パッキング解除のための、アドレス収集を支援する有限状態機械、及び読み込み/格納のためのマイクロコードを示す。 動的収集/分散機械のための実施の例のフロー図である。
収集及び分散処理は、SIMDハードウェアによる使用のために格納されたデータ・エレメントを再配置する。収集処理は、データ・エレメントのセットをメモリから読み出し、標準的には単一のレジスタ又はキャッシュ・ラインにそれらを一緒にパッキングする。分散処理は、パッキングされたデータ構造内のデータ・エレメントを不連続の又はランダムな記憶域に分散させることにより逆処理を実行する。1又は複数のレベルのメモリへのアクセスに関連する遅延に加えて、例えば繰り返されるページ・フォルトによる収集又は分散処理中の割り込みは、一般に処理による如何なる進捗も該処理の始めに戻る前に廃棄されてしまうので、これらの処理に関連するオーバーヘッドを有意に増大しうる。本願明細書に組み込まれる米国特許出願番号2009/0172364は、割り込みされるとき、処理の状態を保存する収集、分散及びプリフェッチの実施を開示している。従って、処理が再開されるとき、処理全体を繰り返すことが要求されない。
第1の態様によると、効率的なデータ転送処理は、プロセッサ装置により、複数のデータ・エレメントに対する第1の記憶域と第2の記憶域との間の転送処理を指定する単一の命令をデコードする段階、前記プロセッサ内の演算実行部による実行のために単一の命令を発行する段階、単一の命令の実行中に例外の発生を検出する段階、及び該例外に応答して、該例外を配信する前に、保留されているトラップ又は割り込みを例外ハンドラに配信する段階、により達成されうる。
以下の実施形態、実施例及び例の説明のために、説明用の用語が用いられる。このような特定の説明用の用語の定義は次の通りである。
コンピュータ・システム又はデータ処理装置若しくはシステムは、データにアクセスするための及び/又は通信のための如何なる種類の装置若しくはシステムも意味すると理解されてよい。例として、限定ではなく、次の1又は複数の如何なる組み合わせを有してもよい。ラップトップ・コンピュータ、ノート型コンピュータ、デスクトップ・コンピュータ、パーソナル・デジタル・アシスタント、ハンドヘルド・コンピュータ、個人用整理手帳、パームトップ・コンピュータ、ポケット・コンピュータ、携帯電話機/ファックス装置、ゲーム・コンピュータ、デジタル・タブレット装置、電子書籍、及びデジタル・ビデオ又はデジタル音声レコーダ/プレイヤ。
レジスタは、データを格納及び提供可能な如何なる装置であってもよい。データ・フォーマットに関するレジスタの更なる機能は、以下に説明される。レジスタは、必ずしもプロセッサと同じダイ又は同じパッケージに含まれない。
「処理する」、「計算する」、「算出する」、「決定する」等のような語は、コンピュータ若しくはコンピュータ・システム又は同様の電子計算装置を表す。コンピュータ若しくはコンピュータ・システム又は同様の電子計算装置は、該コンピュータ・システム内のレジスタ及び/又はメモリ内の電子のような物理量として提示されたデータを、コンピュータ・システムのメモリ又はレジスタ又は他の情報記憶装置、送信機又は表示装置等の中の物理量として同様に提示される他のデータへ操作及び/又は変換する。また、用語「複数の」は、本願明細書を通じて2以上の構成要素、装置、要素、パラメータ等を説明するために用いられうる。更に、用語「例外」及び「フォルト」は、現在の処理の保留を引き起こす事象を表すために道義的に用いられる。種類は、アドレス例外、データ例外、処理例外、オーバーフロー例外、保護例外、アンダーフロー例外を含む。
理解されるべき点は、本願明細書に開示された教示は種々の用途で用いられてもよいことである」。この点に限定されないが、本願明細書に開示された回路及び技術は、パーソナル・コンピュータ(PC)、無線装置又は無線局、ビデオ又はデジタル・ゲーム装置又はシステム、画像収集、処理、生成及び/又は視覚化システム又はディスプレイ、デジタル・ディスプレイ・システム、通信システム等のような多くの装置で用いられてもよい。
図1は、フロントサイド・バス及び/又はシステム・バスにより相互接続されたプロセッサ、メモリ及び入力/出力装置を有するシステムを示す。図2は、多数のポイント・ツー・ポイント・インタフェースにより相互接続されたプロセッサ、メモリ及び入力/出力装置を有するシステムを示す。他のプロセッサ・アーキテクチャが用いられてもよく、プロセッサ内で他のデータ通信技術が用いられてもよい。
図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)であってもよい。他の実施形態は、他の相互接続が用いられてよい。
幾つかの実施では、他の構成要素が、第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に向けてもよい。
図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とデータを交換してもよい。
図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は、固定磁気ディスク、フロッピ・ディスク・ドライブ、光ディスク・ドライブ、光磁気ディスク・ドライブ、磁気テープ、又はフラッシュ・メモリを含む不揮発性メモリである。
図3を参照すると、プロセッサ・パイプライン300は、図1又は2のプロセッサ又は他のプロセッサにより動作されてもよい。プロセッサ・パイプライン300は、Out−of−Order型パイプラインである。他のパイプライン構成要素又は機構が用いられてもよい。
レベル1(L1)キャッシュ・ステージ302は、命令及び/又はデータをレベル1(L1)キャッシュ(図1の142、162)に格納する。プリフェッチ/フェッチ・ステージ304は、レベル1(L1)キャッシュ又は別の場所から命令をフェッチ及び/又はプリフェッチする。命令バッファ・ステージ306は、1又は複数のバッファ内に命令を一時的に蓄える。命令分散ステージ308は、命令をパイプラインに発送する。デコード・ステージ310は、プログラムからプログラム・レベルの命令を取り出し、該プログラム命令から1又は複数の機械レベルの命令を生成する。レジスタ・リネーム・ステージ312は、実行する前に、論理レジスタを実際の物理レジスタにマッピングする。Out−of−Order(OOO)シーケンサ・ステージ314は、実行のために、ソース・レジスタ内の利用可能なデータに基づき、種々の機械命令をスケジューリングする。ソース・レジスタがデータを待っている命令は、該命令の実行を延期させてもよい。一方で、ソース・レジスタが利用可能なデータを有する他の命令は、順々に実行を進めてもよい。幾つかの実施形態では、これらの命令は、実行のために並列してスケジューリングされてもよい。
レジスタ・ファイル・ステージ316は、物理(例えばソース)レジスタを読み取る。演算実行部ステージ318は、1又は複数のユニット内に機械命令を入れる。アドバンスト・ロード・アドレス・テーブル(ALAT)ステージ330は、アドバンスト・ロード命令のようなテスト命令に対応する機械命令及び如何なる調停する格納命令を実行している間に、エントリを変更する。退避ステージ320は、機械状態を更新し、物理宛先レジスタに書き込む。
図3に示されるパイプライン・ステージは、単なる一例であり、種々のプロセッサ・パイプラインの実施形態において機能及び順序の両者が変更されてもよい。本願明細書に開示された実施形態で用いられるプロセッサは、パイプラインを用いる必要はない。
図4を参照すると、データは、図1及び2を参照して説明したシステム内に、例えばキャッシュ・メモリ416及び/又は外部メモリ435内に格納される。データは、(例えば、外部メモリ435内の)連続する場所418、420及び/又は不連続な若しくは隣接しない場所422、424から収集され及び/又はそれらへ分散される。
キャッシュ・メモリ416は標準的にプロセッサ(例えば、それぞれ図1、2のうちの一方を参照して説明されたプロセッサ146、160、270及び/又は280)の内部にあり、外部メモリ435は標準的にプロセッサの外部にある。しかしながら、種々の実施形態では、キャッシュ・メモリ416及び/又は外部メモリ435のそれぞれは、プロセッサの内部又は外部にあってもよい。外部メモリ435は、例えば202、204、110又は他のメモリを有し又はそれらに類似していてもよい。
収集処理は、(例えば、外部メモリ435内の)2以上の不連続な記憶域422及び424からデータを読み出し、該データを宛先レジスタ415のようなレジスタ・メモリに隣接して格納する。データの宛先レジスタ415への収集の状態は、マスク・レジスタ410に記録されるか又は書き込まれる。同様に、分散処理は、宛先レジスタ415のようなレジスタ・メモリからデータを読み出し、(例えば、外部メモリ435内の)2以上の不連続な記憶域422及び424に該データを格納する。データの宛先レジスタ415への分散の状態は、マスク・レジスタ410に記録されるか又は書き込まれる。
レジスタ・メモリ(例えば、宛先、マスク及び/又は他のレジスタ・メモリ)は、標準的にプロセッサ内の比較的小さい記憶空間であってもよい。レジスタ・メモリの内容は、プロセッサの他の記憶ユニット内に格納された内容よりも迅速にアクセスされる。宛先レジスタ415(例えば、ロード・レジスタ)は、カウンタ機械、ポインタ機械、ランダム・アクセス機械(RAM)、ランダム・アクセス・プログラム内蔵機械(RASP)又は他のメモリであてもよい。マスク・レジスタ410(例えば、シャドウ・レジスタ)は、「0」及び「1」のフラグ又は値を保持し、宛先レジスタ415の状態又は記憶容量をシャドウイング又はトラッキングするデータ・フィールド、エレメント又はプレースホルダを有する。
収集及び分散処理は、特に広範に分散されたデータ・エレメントを有するアプリケーションで、データ・エレメントにアクセスするために実施されてもよい。分散されたデータ・エレメントは、例えば宛先レジスタ415内の連続するように又は単一の場所に格納するために集められ、及び/又は2以上の不連続な記憶域に分散されてもよい。ある実施形態では、収集命令は、(例えば、キャッシュ・メモリ416及び/又は外部メモリ435内の)2以上の不連続な記憶域422及び424からの各データ・エレメントを、宛先レジスタ415へ読み出し、コピーし、複製し、転送し又は連続的に書き込む。また、分散命令に関してはこの逆である。このような収集処理は、データ・エレメントの「パッキング」及び/又は宛先レジスタ415の「パッキング」として表される。データ・エレメントを単一の場所(例えば宛先レジスタ415)にパッキングすることにより、プロセッサ(例えば、図1及び2)は、データを読み出し、処理し、監視し又はその他の場合には最小サイクル数(例えば、1サイクル)でデータに処理を実行するために同時に調和して及び/又は順々に集合的に使用する。
場合によっては、不連続記憶域へのアクセスの試みはそれぞれの処理の進捗を遅らせるので、収集及び/又は分散処理は割り込みされうる。いくつかの実施形態では、収集及び/又は分散処理の状態は保存される。従って、処理が再開されるとき、収集及び/又は分散処理全体を繰り返す必要がない。例えばマスク・レジスタ410に収集又は分散された及びされていないデータ・エレメントのレコードを格納することは、割り込みの時点から処理を継続することを可能にする。
収集処理は、2以上の連続又は不連続記憶域からの(例えば、16個の)データ・エレメントのセットのそれぞれを、キャッシュ・メモリ416及び/又は外部メモリ435に収集してもよい(例えば、読み出す又はアクセスする)。収集処理は、キャッシュ・メモリ416内のキャッシュ・ラインへのポインタを入力として用いるか又は有する。データがキャッシュ・ラインの境界に跨って広がっているとき、又はキャッシュ・ライン・アドレスが提供されるとき、収集処理は、外部メモリ435からデータを読み出すが、これは比較的長時間を要しうる。データ・エレメント毎に、収集処理はキャッシュ・メモリに向けられる。そして、収集が不成功の場合、収集処理は外部メモリ435からのデータへのアクセスに進む。幾つかの実施形態では、処理は、キャッシュ・メモリ416をスキップし、外部メモリ435への直接アクセスに進む。
収集処理は、データ・エレメントを宛先レジスタ415(例えば、ロード・レジスタ)に格納又はパッキングする。宛先レジスタ415は、例えば単一の収集処理に用いられる複数の(例えば16個の)別個のデータ・エレメントを有する。宛先レジスタ415内のデータ・エレメント又はベクトルは、データ・エレメントが読み出されたメモリからコピーされたデータ、及び/又はデータ・エレメントが読み出された記憶域へのポインタを有する。
収集処理は、外部メモリ435435にアクセスする前に、キャッシュ・メモリ416、ローカル・メモリ又はプロセッサ内部のメモリにアクセスして各データ・エレメントを読み出すか取り出す。データ・エレメントは、キャッシュ・メモリ416内に、メモリ・ページ又は他のメモリの単位で配置される。データ・エレメントは、メモリ内(例えば、連続記憶域418、420)、或いは不連続の又は隣接しない場所(例えば、不連続記憶域422、424)にパッキングされる。標準的に、収集処理は、2以上のデータ・エレメントが不連続な又は隣接しない記憶域422及び424に格納されているときに用いられる。データ・エレメントは、バイト(例えば、8ビット)、ワード(例えば、2バイト)、ダブル・ワード(例えば、32ビット)、又は他の大きさ又はデータの単位であってもよい。
収集処理のレートは、収集されるエレメントのコヒーレンスのレベルに依存する。例えば、収集されるエレメントのコヒーレンスのレベルは、例えばキャッシュ・メモリ416内にデータ・エレメントが格納される異なるキャッシュ・ラインがどれだけ多くあるかの指標である。大きいコヒーレンスで格納された(例えば、キャッシュ・メモリ416内に少ないキャッシュ・ラインを用いて格納された)エレメントほど、少ない時間で又は少ない動作サイクルで収集されるか又は取り出される。例えば、全てのデータ・エレメントが完全にコヒーレントであるとき(例えば、同一のキャッシュ・ラインにあるとき)、収集処理は、単一の周期でデータを取り出す。しかしながら、収集されたエレメントは完全にコヒーレントでなくてもよい。例えば、エレメントは、幾つかの(例えば、2又は3個の)キャッシュ・ラインに広がってもよく、従って(例えば、レベル1(L1)又は中央演算処理装置(CPU)の)キャッシュ・メモリ416への何回かの(例えば、2又は3回の)アクセスで収集されてもよい。
宛先レジスタ415は、ベクトル・レジスタ、ロード・レジスタ又は2以上の隣接しない記憶域からのアクセス又は収集されたデータを一時的に格納又はパッキングするための他のレジスタ・メモリであってもよい。例えば、データのセット(例えば16個のベクトル)では、宛先レジスタ415は収集処理の宛先であってもよく、キャッシュ・メモリ416及び/又は外部メモリ435はソースであってもよい(例えば、連続418及び420、又は不連続422及び424であってもよい)。
図5は、収集命令がデータ・エレメントのセット(例えば、512ビットSIMDで最大16個の32ビット又は8個の64ビット浮動小数点データ・エレメント)を条件付きでロードし、それらを宛先レジスタ515にパッキングする一実施形態を示す。エレメントは、汎用レジスタ525に渡された基準アドレス520、immediateとして渡されたスケール530、SIMDレジスタとして渡されたインデックス・レジスタ510(パッキングされたインデックスを保持している)、及び任意の変位(示されない)により指定される。データ・エレメントは、それらの対応するマスク・ビットが1の場合にのみロードされる。本実施形態のマスク・レジスタは、専用のマスク・レジスタである。代案として、マスク・レジスタはSIMDレジスタであってもよく、エレメントのマスク・ビットはマスク・レジスタからの対応するエレメントの符号ビットである。マスク・エレメントは、インデックス・エレメントと同一の大きさとして扱われる。エレメントのマスク・ビットが設定されていない場合、宛先レジスタ(SIMDレジスタ)の対応するエレメントは変更されないままである。収集処理が完了すると、マスク・レジスタ全体は、収集命令の実行が例外により割り込まれない限り、該収集命令によりゼロに設定される。
一実施形態では、所定のデータ・セットを収集する収集処理が完了する前に終了されたとき、宛先レジスタ515は、既に集められたデータ(例えば、所定のデータ・セットのうちの一部のサブセット)を一時的に格納又は保護する。
以下の擬似コードは、本願明細書に記載された処理の例証的な例を有する。他の擬似コード、言語、処理、処理の順序、及び/又は数が用いられてもよい。
以下の擬似コードは、収集命令(例えば、「vgather」と記される)がどのように動作するかの例を示す。
Figure 0005148680
図6は、分散命令が、ソースのLSBからMSBまでの如何なる重複する宛先記憶域への書き込みを指示しながら、ソースSIMDレジスタ615からのエレメントのセットを条件付きで格納する一実施形態を示す。宛先記憶域616、618、620及び622は、収集命令について上述したように指定される。エレメントは、それらの対応するマスク・ビットが1の場合にのみ格納される。マスク・レジスタ全体は、収集命令の実行が例外を引き起こさない限り、収集命令の実行によりゼロに設定される。この命令は、(まさに上述の収集命令のように)少なくとも1つのエレメントが既に分散されている場合に、例外によりサスペンドされうる。幾つかの実施では、重複する宛先の場所への書き込みのみが、(ソース・レジスタのLSBからMSBまで)互いに対して順序付けられることが保証される。重複は次のように決定される。各エレメントは、バイト大の場所のセットに対応する。[(インデックス×スケール):(インデックス×スケール+データ・エレメントの大きさ−1)]である。2つの異なるエレメントからの任意の2つの場所が同一である場合、エレメントは重複する。重複しない書き込みは、任意の順序で生じうる。幾つかの実施形態では、2以上の宛先の場所が完全に重複している場合、「先の」書き込みがスキップされてもよい。幾つかの実施形態では、エレメントは、(如何なる重複もない場合には)任意の順序で分散されてもよいが、フォルトは右から左への順に配信されなければならない。
以下の擬似コードは、分散命令(例えば、「vscatter」と記される)がどのように動作するかの例を示す。
Figure 0005148680
図4を再び参照すると、分散/収集プリフェッチ命令(例えば、vscatterpf及びvgatherpf)は、vgather命令と同様に定められてもよい。しかし、データを宛先レジスタ415にロードする代わりに、データを有するキャッシュ・ラインがキャッシュ・メモリ416にプリフェッチされてもよい。一実施形態では、キャッシュ・ミスのペナルティを受けるのを回避するために、データは、収集又は分散される前に、最初にキャッシュ・メモリ416にプリフェッチされる。幾つかの実施形態では、命令は、データがどのレベルのキャッシュにプリフェッチされるべきかに関するヒントを得る。収集プリフェッチは、プリフェッチされているデータが次に読み取られる(書き込みとは対照的に)ヒントを伝えてもよい。分散プリフェッチは、プリフェッチされているデータが次に書き込まれるヒントを伝えてもよい。一実施形態では、収集及び/又は分散プリフェッチ命令は、マスク・レジスタを変更しない。前方への進捗を保証するため、本実施形態では、この命令は、例外でサスペンドせず、ページ・フォルトを配信しない。
収集及び/又は分散処理は、種々の理由で停止又は割り込まれうる。例えば、コンテキスト切り替え装置は、(例えば、2以上の複数のタスク間でプロセッサの状態又はコンテキストを変更するために)レジスタ・コンテキスト、タスク・コンテキスト、又は処理コンテキストを切り替えうる。別の実施形態では、1以上のより正確な例外が指定された処理を妨げるか又は遅延させるとき(例えば、オペレーティング・システム(OS)の許容ページ・フォルト又はキャッシュ・ページ・ミスの最大数又は限度にあたったとき)、及び/又は処理に割り当てられた時間が終了したとき、処理は停止又は割り込まれうる。更に別の実施形態では、収集/分散処理は、処理がより高い優先度の処理により置き換えられたとき、停止又は割り込まれうる。
収集及び/又は分散処理は、例えばシステム内の問題のある記憶域からデータを取り出そうとしてページ・フォルトを生じるとき、妨げられうる。ページ・フォルトのような幾つかのフォルト状態は、プログラムのフローがフォルトになっている命令を再開でき、同時に対応する命令セットの前方への進捗を保証するように、処理される。一実施形態では、メモリ・ページは、宛先レジスタ415と外部メモリ435、ハード・ドライブ若しくはディスクのような他のメモリとの間の転送の単位として用いられる固定長ブロックのキャッシュ・メモリ416を有する。ページ・フォルトは、収集又は分散処理がアドレス空間にマッピングされたメモリ・ページにアクセスしたが、物理的にロードできない若しくはキャッシュ・メモリ416内で利用可能でないとき、割り込み(例えば、又は例外)を有する。例えば、キャッシュ・メモリ416から収集されている各データ・エレメントは、ページ・フォルトを引き起こし、メモリ・ページの境界に渡る各エレメントは2つのページ・フォルトを引き起こしうる。
一実施形態では、システムは、例えばページ・フォルトに遭遇したような許容される例外の最大数(例えば、16以上)にあたったとき、特定の処理を停止するか又は割り込む。例えば、OSは、1つの処理に対して、キャッシュ及び/又はページ・ミス若しくはフォルトの限度を有してもよい。OSは、ページ・フォルトを処理するために例外処理ソフトウェアを有してもよい。また、プロセッサは、ページ・フォルトを検出するためにメモリ管理ユニットを有してもよい。他の例外処理機構が用いられてもよい。
ページ・フォルトに遭遇したとき、システムは、ページ・フォルトを処理するために、収集及び/又は分散処理を処理の途中で停止してもよい。処理が繰り返されページ・フォルトに繰り返し遭遇したとき、処理により行われた進捗が廃棄された場合、収集/分散処理は少しも前へ進めない。
キャッシュ・メモリ416及び/又は外部メモリ435から収集されたデータを宛先レジスタ415に格納することは、完全な収集処理(例えば16個全てのベクトルを収集すること)が完了前に割り込まれ、失敗又は終了した場合にデータを保護する。特に、データ・エレメントが例外を生成する場合、これらの命令は、例外を配信する前にエレメントのサブセットを更新する(つまり、収集処理ではマスク・レジスタ及び宛先レジスタ、又は分散処理ではメモリが、例外が配信される前に書き込まれたエレメントのサブセットを有する)。収集されているデータ・エレメントを宛先レジスタ415に格納することにより、割り込まれた又は停止された収集処理により以前に集められたデータは保護され、割り込みの前に処理が以前に終了した場所で収集処理が再開する。割り込まれた収集処理(例えば、収集された1以上のデータ・エレメントを有する)は、宛先レジスタ415に欠けている残りのエレメントを収集し始めてもよい。
収集命令の場合、同一のアーキテクチャのレジスタが入力と出力の両方として用いられる場合、出力レジスタが例外のときに部分的に更新されうるので、及びインデックスがデータ・エレメントと異なる大きさになりうるので、幾つかの入力状態は失われうる。幾つかの実施形態では、命令で指定されたインデックス及び/又はマスク・レジスタが宛先レジスタと同一の場合、収集命令はフォルトを配信し、命令の入力データが失われるのを防ぐ。
幾つかの実施形態では、データ・エレメントは、任意の順序でメモリから読み出されてもよい。一方で、フォルトは、宛先レジスタ415内のデータ・エレメントの順序に関しては、右から左へ(つまり、LSBからMSBへ)の順で配信される。少なくとも1つのエレメントが既に収集されている場合(つまり、例外が、一番右のエレメント以外の、マスク・ビットのセットされているエレメントにより引き起こされた場合)、収集命令は例外によりサスペンドされうる。フォルトがエレメントにより引き起こされ、配信される場合、宛先レジスタ415のLSBに近い全てのエレメントは、フォルトにならない場合に宛先レジスタ内に収集され、それらのマスク・ビットは更新される。宛先レジスタ415のMSBに近いデータ・エレメントは、収集されてもされなくてもよい。所与のデータ・エレメントが複数のフォルトを引き起こす場合、それらは従来の順序で配信される。従って、収集処理が割り込まれるとき、宛先レジスタおよびマスク・レジスタは部分的に更新され、収集されたエレメントは宛先レジスタ内に置かれそれらのマスク・ビットはゼロに設定される。
幾つかのアプリケーションでは、特にソフトウェアをコーディング及び/又はデバッグしている間、データ中断点(ブレークポイント)は、変数の値が変化するときに又は変数が参照されるときに、プログラムの例外を止めるために用いられてもよい。収集又は分散命令がデータ中断点及び例外の両方を引き起こす場合、従来のアーキテクチャは例外を配信し、データ中断点は失われるだろう(何故なら、命令は、アーキテクチャの状態を部分的に更新し、中断点を引き起こしたロード/格納をやり直さないからである)。例外がある場合にもデータ中断点を確実に配信するために、例外が引き起こされたときにトラップが保留されている場合に、命令は(フォルトしているエレメントの直ぐ右の処理で)サスペンドされてもよい。これは、データ中断点がトラップとして扱われ、一方で例外がフォルトとして処理されるので、データ中断点が全て使用可能にされることを保証する。この仕組みでは、如何なるデータ中断点も失われず、前方への進捗が保証される(フォルト・ハンドラがフォルト状態をクリアすると仮定する)。この仕組みは、繰り返される文字列操作のために用いられる仕組みとは異なる。例えば、文字列操作は、トラップと例外の両方によりサスペンドされうる。トラップだけでは、これらの収集/分散命令をサスペンドしない(その代わり、如何なる例外も存在しない場合、殆どの他の命令と同様に、トラップは命令実行の終わりに配信される)。
幾つかの実施形態では、任意のトラップ又は割り込みが既に収集されたエレメントから保留している場合、それらは例外の代わりに配信されるだろう。この場合、フラグ・ビット、例えばEFLAG.RFは1に設定されてよく、実行が続けられるとき命令中断点は再び引き起こされない。
幾つかの実施形態では、マスク・レジスタ410は、データ・エレメントの所定のセットの収集及び宛先レジスタ415のパッキングを監視及び/又は制御するために実施される。マスク・レジスタ410は、シャドウ・レジスタ、制御レジスタ、フラグ・レジスタ、汎用レジスタ、SIMDレジスタ、又は他の適切なレジスタであってもよい。マスク・レジスタ410は、宛先レジスタ415に格納されたデータを示し、従って収集処理の完了を追跡するために用いられてもよい。一実施形態では、宛先レジスタ415内に格納されたデータ・エレメントとマスク・レジスタ410内に格納された対応する状態エレメントとの間に、1対1の対応が存在する。状態エレメント又は値は、フラグ、マーカ、タブ、指標、信号、及び/又は他の数、(例えば、対応する又は指し示されたレジスタ位置の)対応するデータ・エレメントが宛先レジスタ415内に格納されているか否かを示すビット及び/又はコード例えば、マスク・レジスタ410内の「1」は、対応するデータ・エレメントが宛先レジスタ415内に書き込まれなかったことを示してもよい。他の場合には「0」が用いられてもよい。他の数又はフラグが用いられてもよい。
一実施形態では、プロセッサは、1つの記憶域セットに対して単一の命令を用いて、収集及び/又は分散処理を一度呼び出してもよい。収集処理は、全てのデータ・エレメントが収集されるまで及び/又はレジスタ状態エレメントの合計値がゼロになるまで、実行又はランしてもよい。如何なる大きさの(例えば、任意の数の収集されたエレメント又は命令に対して)満たされた又はパッキングされた宛先レジスタ415も、(例えば、宛先レジスタ415の大きさに拘わらず)処理の完了後に空の又はゼロのマスク・レジスタ410を生じるので、マスク・レジスタ410は、如何なる大きさの宛先レジスタ415(例えば、如何なる数の収集されたエレメント)のパッキングを監視するために用いられてもよい。例えば、任意の数の「0」状態エレメントの累計は、常に0である。従って、マスク・レジスタ410は、種々の数のデータ・エレメントの宛先レジスタ415内へのパッキング又は収集を監視するために用いられてもよい。
幾つかの実施形態では、転送の完了を表すために、他のマスク値が用いられてもよい。例えば、代替の実施形態では、マスク・レジスタ410内の「1」は、対応するデータ・エレメントが宛先レジスタ415内に書き込まれたことを示してもよい。他の場合には、マスク・レジスタ415は対応するマスク位置に「0」を格納する。このような実施形態では、収集命令は、マスク・レジスタ410内の状態エレメントの値の合計が所定の閾、例えば収集されるべきデータ・エレメントの数に等しくなるまで実行してよい。該閾は収集命令毎に変化してもよい。幾つかの実施形態では、指定された処理は、マスク・レジスタ410内のマスク・エレメントに対する論理処理(例えば、AND又はOR)が所定の値(例えば、「0」又は「1」)を生じるまで実行される。
一実施形態では、収集及び/又は分散命令は、フラグがマスク・レジスタ410がクリアされた、ゼロ又は他の所定値(例えば、収集命令に対して収集されるべきエレメントの数)になるまで、実行する。一実施形態では、処理が完了したとき、完了マスクが信号で伝えられるか又はフラグで知らせる。
一実施形態では、各処理サイクルで、収集命令は、異なるキャッシュ・ラインを(例えばL1)キャッシュ・メモリ416から読み出し、読み出したキャッシュ・ラインに対応する宛先レジスタ415内の最大数のエレメントを満たす。例えば、読み出したキャッシュ・ラインが収集されるべき1つのエレメントを有する場合、1つのエレメントは、宛先レジスタ415内に書き込まれ、マスク・レジスタ410内の対応する1つのビット状態エレメントが「0」に設定されてもよい。幾つかの実施形態では、デュアル又はマルチ・ポートキャッシュ・メモリ416及び/又は外部メモリ435が用いられるとき、プロセッサは、サイクル毎に1より多いデータ・エレメントを収集する。この場合には、データ・エレメントの所定のセットを収集する収集処理は、より少ないサイクル又は繰り返しで実行する。
効率的な収集処理は、マイクロコード及び/又はハードウェア機構の組み合わせを用いてシステム内で実施されてもよい。一実施形態では、プロセッサは、所定のデータ・セットが宛先ベクトル・レジスタ・メモリ415内に完全に収集されるまで、収集処理を続けてもよい。
本願明細書に開示された命令の実施に関与する計算の幾つかの特徴は、次を含む。(1)基準アドレス、インデックス、スケール及び変位を用いたアドレスの生成、(2)データ・エレメントのロード/格納、及び(3)データ・エレメントの宛先/ソース・レジスタからのパッキング/パッキング解除。一連の実施形態は、ソフトウェア・エミュレーション、既存のuopを用いたマイクロコード、新たなuopを用いたマイクロコード(つまり、命令の当該部分のための特別なハードウェア支援)及び有限状態機械(FSM)を含むこれらのそれぞれに対して可能である。
図7を参照すると、パッキング/パッキング解除のための、アドレス収集を支援する有限状態機械、及び読み込み/格納のためのマイクロコードを有するこれらの計算を提供する一実施形態が示される。段階710で、インデックス・レジスタ及びマスク・レジスタ(及び分散ではソース・レジスタ)は、命令のために資源を割り当てこれらのレジスタのコピーを格納する収集/分散FSMへ送られる。示された実施形態のマスク・レジスタはSIMDレジスタであるが、マスクは、例えば専用マスク・レジスタ、汎用レジスタ等を含む他の記憶場所からFSMへ提供されてもよい。段階720で、SIMD幅特有ロード/格納uopのセットは、プロセッサにより実行される。これらの特有ロード/格納uopに対し、アドレス生成ハードウェアは、汎用レジスタから基準アドレスを、(ロード/格納uop毎に1つのエレメントのインデックスを送信する)収集/分散FSMからインデックスを受信する。分散では、FSMはまた、格納uop毎にソース・レジスタからデータ・エレメントを送信する。収集では、メモリは、ロードuop毎に、ハードウェアがFSMへ送信するデータ・エレメントを返す。幾つかの実施形態では、分散処理のソースは、キャッシュ・ライン又は他の記憶場所である。また、ハードウェアは、スケール値及び幾つかの実施形態では変位値を、通常のロード/格納のために用いられるのと同一の機構を介して、アドレス生成ロジックに提供する。段階730で、FSMは、更新されたマスク値を、レジスタ・ファイルに書き戻す(また、収集では、FSMは宛先値も書き込む)。代替の実施形態は、3つの計算の全てを実行するために収集/分散FSMを用いてもよく、従ってロード/格納uopを用いなくてもよい。
ロード/格納処理が通常のロード及び格納を用いて実行された場合、実装は、データ・エレメントと同じく多くのロード/格納を必要とするだろう。従って、実施は、全てのデータ・エレメントに渡るループ(例えば、ソフトウェア・ループ、マイクロコード・ループ又は状態機械の「ループ」)を有してもよく、又はループに依存しなくてもよい(例えば、マイクロコード内のSIMD幅ロード/格納uopのセット)。更に、幾つかの実施形態は、幾つかの又は全ての処理に対して同時に処理を実行するよう構成されてもよい。
幾つかの実施形態は、より良好な性能を提供すると予測されたものを動的に選択するための複数の実施及び機構を有してもよい。幾つかの実施では、性能は、収集/分散命令により作用されたキャッシュ・ラインの数に依存する。例えば、収集の1つの可能なマイクロコードの実施は、複数のエレメントのうちの1つが存在するキャッシュ・ラインをロードし該ラインにある全ての他のエレメントを抽出するuopについてのループを有する。このような実施は、エレメントが少ない数のキャッシュ・ラインに存在するときほど速い。この実施が多数のキャッシュ・ラインに作用する必要がある場合、一度に単に1つのデータ・エレメントをロードする(ループを有さない)単純な実施は、より速い。ループを有する実施は、ループuopからのオーバーヘッドを招く。従って、一実施形態は、良好に実行すると期待される実施を選択する予測と共に、両方の実施を有してもよい。
図8は、予測ビットを用いて、収集又は分散処理を実行するときにどの2つの実施が用いられるべきかを制御する一実施形態による収集/分散FSMの一例を示す。予測は、静的収集/分散命令毎に単一ビットを有するインデックス付けされた命令ポインタのテーブル(「IP(Instruction Pointer)インデックス・テーブル」)である。一実施形態では、ビットは、Nサイクル毎に全てクリアされる。代替の実施形態では、実施内のロジック840は、どれだけ多くのキャッシュ・ラインが作用されるかを計数し、作用されたキャッシュ・ラインの数が閾より低い場合に該ロジックは対応するビットをクリアしてもよい。実施中、収集/分散が実行されるとき810、テーブル内のビットがクリアされた場合820、ハードウェアはループの実施を用いる830(その他の場合、ハードウェアは他の実施を用いる840)。ループの実施を用いるとき830、命令が特定の閾より多い数のキャッシュ・ラインに作用する場合850、ハードウェアは該命令のために予測ビットを設定する860。従って、ハードウェアは、次回に収集/分散命令が実行されるとき、ループのない実施を用いるよう選択するだろう。
実施形態は、プロセッサ又はコントローラにより実行されると本願明細書に記載された方法を実行する命令を有する又は格納された例えばメモリ、ディスク・ドライブ又はユニバーサル・シリアル・バス(USB)フラッシュ・メモリ、又は図1及び2に示された種々の記憶及びメモリ装置のようなコンピュータ可読媒体を有してもよい。
多数の実施形態、実施及び例が記載された。しかしながら、理解されるべき点は、本発明の精神及び範囲から逸脱することなく種々の変更が行われうることである。例えば、収集及び分散処理は、メモリとレジスタとの間とは対照的に、記憶域間(つまり、キャッシュ・ライン間、キャッシュ・レベル間、及び/又は内部メモリと外部メモリとの間)で実行されてもよい。更に、収集及び分散処理は、2以上のレジスタ間で実行されてもよい。従って、他の実施形態も本発明の範囲に包含される。
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 ソース/宛先レジスタ

Claims (30)

  1. プロセッサ装置により、複数のデータ・エレメントに対する第1の記憶域と第2の記憶域との間のデータ転送処理を指定する単一の命令をデコードする段階;
    該プロセッサ内の演算実行部により、実行のために該単一の命令を発行する段階、
    前記単一の命令の実行中に例外の発生を検出する段階、及び
    該例外に応答して、該例外を配信する前に、保留されているトラップ又は割り込みを例外ハンドラに配信する段階、
    を有する方法。
  2. 前記単一の命令の実行に応答して、前記第1及び第2の記憶域間で前記複数のデータ・エレメントを転送する段階、
    を更に有し、
    前記実行に応答して、配信する段階は、
    前記例外の配信の前に、前記転送されたデータ・エレメントに関連する保留されているトラップ又は割り込みを前記例外ハンドラに配信する段階、
    を更に有する、
    ことを特徴とする請求項1に記載の方法。
  3. 前記単一の命令の実行が再開したとき、前記データ・エレメントが転送されるべきでないと示すよう、前記転送されたデータ・エレメントに対応するマスク・エレメントを更新する段階、
    を更に有する請求項2に記載の方法。
  4. 前記トラップ又は割り込みは、データ中断点トラップである、請求項1記載の方法。
  5. 前記第1の記憶域は、SIMDレジスタであり、
    該SIMDレジスタへ又は該SIMDレジスタから転送されているデータに関連する例外は、所定の順序で配信され、
    該順序は、フォルトしているデータ・エレメントの、前記SIMDレジスタ内の他のフォルトしているデータ・エレメントに対する相対位置に基づく、
    ことを特徴とする請求項1に記載の方法。
  6. 第1又は第2の実施がより良好に実行されることを示す予測値に基づき、前記単一の命令の該第1及び第2の実施の間で選択する段階、
    を更に有する請求項1に記載の方法。
  7. 前記単一の命令の実行中にアクセスされた記憶域が閾数を超えたことに基づき、前記予測値を更新する段階、
    を更に有する請求項6に記載の方法。
  8. 前記第1の実施は、重複していない記憶域からデータ・エレメントをロードする前に、重複している記憶域を有するデータ・エレメントをロードするために、処理に関するループを実行する段階を有する、
    ことを特徴とする請求項6に記載の方法。
  9. 前記重複している記憶域は、キャッシュ・ラインを有する、
    ことを特徴とする請求項8に記載の方法。
  10. 前記第1の実施は、
    第1のデータ・エレメント及び第2のデータ・エレメントが重複している記憶域に格納されるべきであると決定する段階、
    前記第1のデータ・エレメントに関連する最初の格納処理をスキップする段階、
    前記第1及び第2のデータ・エレメントに対して次の格納処理を実行する段階、
    を有する、
    ことを特徴とする請求項6記載の方法。
  11. 複数のデータ・エレメントを格納するよう構成された第1の記憶域及び第2の記憶域、
    前記複数のデータ・エレメントに対する前記第1及び第2の記憶域間の転送処理を指定する単一の命令をデコードするよう構成されたデコーダ、
    前記デコードされた命令を受信するために該デコーダに結合され、前記転送処理を実行するために前記第1及び第2の記憶域に結合された演算実行部、
    トラップ又は割り込みを受信する例外ハンドラ、
    を有し、
    前記単一の命令の実行中に例外が発生すると、前記例外を送信する前に、前記トラップ又は割り込みを前記例外ハンドラへ送信する、
    ことを特徴とするプロセッサ。
  12. 前記単一の命令は、複数のマスク・エレメントを格納するよう構成された第3の記憶域を指定するように動作し、
    各マスク・エレメントは、前記複数のデータ・エレメントの中の個々のデータ・エレメントに対応し、
    前記演算実行部は、前記単一の命令が再開されたときに、データ・エレメントが転送されるべきでないと示すよう、転送されたデータ・エレメントに対応するマスク・エレメントを更新する、
    ことを特徴とする請求項11に記載のプロセッサ。
  13. 前記トラップ又は割り込みは、データ中断点トラップである、請求項12記載のプロセッサ。
  14. 前記第1の記憶域は、SIMDレジスタであり、
    該SIMDレジスタへ又は該SIMDレジスタから転送されているデータに関連する例外は、所定の順序で配信され、
    該順序は、フォルトしているデータ・エレメントの、前記SIMDレジスタ内の他のフォルトしているデータ・エレメントに対する相対位置に基づく、
    ことを特徴とする請求項11に記載のプロセッサ。
  15. 前記演算実行部は、
    前記複数のデータ・エレメントを前記第1及び第2の記憶域の間で転送するよう構成された第1の実行ロジック及び第2の実行ロジック、
    前記第1及び第2の実行ロジックの間で選択するよう構成された選択ロジック、
    を更に有する、
    ことを特徴とする請求項11記載のプロセッサ。
  16. 前記選択ロジックは、前記第1又は第2の実行ロジックが前記転送処理を事項するときにより良い性能を提供すると示す予測値を設定する予測ロジックを有する、
    ことを特徴とする請求項15に記載のプロセッサ。
  17. 前記予測ロジックは、前記単一の命令の実行中にアクセスされた記憶域が閾数を超えたことに基づき、前記予測値を更新する、
    ことを特徴とする請求項16に記載のプロセッサ。
  18. 前記第1の実行ロジックは、重複していない記憶域からデータ・エレメントをロードする前に、重複している記憶域を有するデータ・エレメントをロードするために、処理に関するループを実行するよう構成される、
    ことを特徴とする請求項15に記載のプロセッサ。
  19. 前記重複している記憶域は、キャッシュ・ラインを有する、
    ことを特徴とする請求項18に記載のプロセッサ。
  20. 前記第1の実行ロジックは、
    第1のデータ・エレメント及び第2のデータ・エレメントが重複している記憶域に格納されるべきであると決定し、
    肯定的な決定に応答して、
    前記第1のデータ・エレメントに関連する最初の格納処理をスキップし、
    前記第1及び第2のデータ・エレメントに対して次の格納処理を実行する、
    ことを特徴とする請求項15記載のプロセッサ。
  21. 第1の記憶域に結合されたメモリ制御部、
    該メモリ制御部に結合されたプロセッサ、
    を有し、
    前記プロセッサは、
    複数のデータ・エレメントを格納するよう構成された第2の記憶域及び第3の記憶域、
    前記複数のデータ・エレメントに対する前記第1、第2及び第3の記憶域のうちの2以上の間の転送処理を指定する単一の命令をデコードするよう構成されたデコーダ、
    前記第2及び第3の記憶域に結合され、前記デコードされた命令を受信するために該デコーダに更に結合され、前記単一の命令を実行するよう構成された演算実行部、
    トラップ又は割り込みを受信する例外ハンドラ、
    を有し、
    前記プロセッサは、前記単一の命令の実行中に例外が発生すると、前記例外を送信する前に、前記トラップ又は割り込みを前記例外ハンドラへ送信するよう構成される、
    ことを特徴とするシステム。
  22. 前記単一の命令は、複数のマスク・エレメントを格納するよう構成された第4の記憶域を指定するように動作し、
    各マスク・エレメントは、前記複数のデータ・エレメントの中の個々のデータ・エレメントに対応し、
    前記演算実行部は、前記単一の命令が再開されたときに、データ・エレメントが転送されるべきでないと示すよう、転送されたデータ・エレメントに対応するマスク・エレメントを更新する、
    ことを特徴とする請求項21に記載のシステム。
  23. 前記トラップ又は割り込みは、データ中断点トラップである、ことを特徴とする請求項22記載のシステム。
  24. 前記第2の記憶域は、SIMDレジスタであり、
    該SIMDレジスタへ又は該SIMDレジスタから転送されているデータに関連する例外は、所定の順序で配信され、
    該順序は、フォルトしているデータ・エレメントの、前記SIMDレジスタ内の他のフォルトしているデータ・エレメントに対する相対位置に基づく、
    ことを特徴とする請求項21に記載のシステム。
  25. 前記演算実行部は、
    前記単一の命令を実行するよう構成された第1及び第2の実行ロジック、
    前記第1及び第2の実行ロジックの間で選択するよう構成された選択ロジック、
    を有する、
    ことを特徴とする請求項21記載のシステム。
  26. 前記選択ロジックは、前記第1又は第2の実行ロジックが前記転送処理を事項するときにより良い性能を提供すると示す予測値を設定する予測ロジックを有する、
    ことを特徴とする請求項25に記載のシステム。
  27. 前記予測ロジックは、前記単一の命令の実行中にアクセスされた記憶域が閾数を超えたことに基づき、前記予測値を更新する、
    ことを特徴とする請求項26に記載のシステム。
  28. 前記第1の実行ロジックは、重複していない記憶域からデータ・エレメントをロードする前に、重複している記憶域を有するデータ・エレメントをロードするために、処理に関するループを実行するよう構成される、
    ことを特徴とする請求項25に記載のシステム。
  29. 前記第1の実行ロジックは、
    第1のデータ・エレメント及び第2のデータ・エレメントが重複している記憶域に格納されるべきであると決定し、
    肯定的な決定に応答して、
    前記第1のデータ・エレメントに関連する最初の格納処理をスキップし、
    前記第1及び第2のデータ・エレメントに対して次の格納処理を実行する、
    ことを特徴とする請求項25記載のシステム。
  30. 格納された命令を有するコンピュータ可読媒体であって、
    該命令は、プロセッサに、
    複数のデータ・エレメントに対する第1の記憶域と第2の記憶域との間の転送処理を指定する単一の命令をデコードさせ、
    前記プロセッサ内の演算実行部による実行のために前記単一の命令を発行させ、
    前記単一の命令の実行中に例外の発生を検出させ、
    前記単一の命令の実行に応答して、前記複数のデータ・エレメントのうちの1つのデータ・エレメントを前記第1及び第2の記憶域間で転送させ、
    前記例外を分配する前に、前記転送されたデータ・エレメントに関連するトラップ又は割り込みを前記例外ハンドラに配信させる、
    ことを特徴とするコンピュータ可読媒体。
JP2010273399A 2009-12-22 2010-12-08 複数のデータ・エレメントの収集及び分散 Active JP5148680B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/644,440 2009-12-22
US12/644,440 US8447962B2 (en) 2009-12-22 2009-12-22 Gathering and scattering multiple data elements

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012261129A Division JP5612061B2 (ja) 2009-12-22 2012-11-29 複数のデータ・エレメントの収集及び分散

Publications (2)

Publication Number Publication Date
JP2011134318A JP2011134318A (ja) 2011-07-07
JP5148680B2 true JP5148680B2 (ja) 2013-02-20

Family

ID=44152780

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2010273399A Active JP5148680B2 (ja) 2009-12-22 2010-12-08 複数のデータ・エレメントの収集及び分散
JP2012261129A Active JP5612061B2 (ja) 2009-12-22 2012-11-29 複数のデータ・エレメントの収集及び分散

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2012261129A Active JP5612061B2 (ja) 2009-12-22 2012-11-29 複数のデータ・エレメントの収集及び分散

Country Status (5)

Country Link
US (1) US8447962B2 (ja)
JP (2) JP5148680B2 (ja)
CN (2) CN102103483B (ja)
DE (1) DE102010053088A1 (ja)
TW (1) TWI439929B (ja)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8447962B2 (en) * 2009-12-22 2013-05-21 Intel Corporation Gathering and scattering multiple data elements
JP5573134B2 (ja) * 2009-12-04 2014-08-20 日本電気株式会社 ベクトル型計算機及びベクトル型計算機の命令制御方法
US10175990B2 (en) * 2009-12-22 2019-01-08 Intel Corporation Gathering and scattering multiple data elements
CN103502935B (zh) 2011-04-01 2016-10-12 英特尔公司 向量友好指令格式及其执行
US20120254591A1 (en) * 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements
KR101877347B1 (ko) * 2011-09-26 2018-07-12 인텔 코포레이션 벡터 로드-op/저장-op에 스트라이드 기능을 제공하는 명령어 및 로직
US9672036B2 (en) * 2011-09-26 2017-06-06 Intel Corporation Instruction and logic to provide vector loads with strides and masking functionality
GB2508533B (en) 2011-09-26 2020-01-01 Intel Corp Instruction and logic to provide vector scatter-op and gather-op functionality
CN106293631B (zh) * 2011-09-26 2020-04-10 英特尔公司 用于提供向量分散操作和聚集操作功能的指令和逻辑
US8839429B2 (en) * 2011-11-07 2014-09-16 Qualcomm Incorporated Methods, devices, and systems for detecting return-oriented programming exploits
US8842126B2 (en) * 2011-12-13 2014-09-23 Advanced Micro Devices, Inc. Methods and systems to facilitate operation in unpinned memory
CN104011670B (zh) 2011-12-22 2016-12-28 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
CN104025022B (zh) * 2011-12-23 2017-09-19 英特尔公司 用于具有推测支持的向量化的装置和方法
US10055225B2 (en) * 2011-12-23 2018-08-21 Intel Corporation Multi-register scatter instruction
WO2013095661A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing conversion of a list of index values into a mask value
WO2013095657A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction and logic to provide vector blend and permute functionality
WO2013095672A1 (en) 2011-12-23 2013-06-27 Intel Corporation Multi-register gather instruction
CN114721721A (zh) * 2011-12-23 2022-07-08 英特尔公司 用于混洗浮点或整数值的装置和方法
WO2013101020A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Aggregated page fault signaling and handline
US9524162B2 (en) * 2012-04-25 2016-12-20 Freescale Semiconductor, Inc. Apparatus and method for memory copy at a processor
US8972697B2 (en) * 2012-06-02 2015-03-03 Intel Corporation Gather using index array and finite state machine
US9626333B2 (en) 2012-06-02 2017-04-18 Intel Corporation Scatter using index array and finite state machine
US9141560B2 (en) * 2012-06-29 2015-09-22 Intel Corporation Multi-level storage apparatus
US9575755B2 (en) 2012-08-03 2017-02-21 International Business Machines Corporation Vector processing in an active memory device
US9569211B2 (en) 2012-08-03 2017-02-14 International Business Machines Corporation Predication in a vector processor
US9632777B2 (en) * 2012-08-03 2017-04-25 International Business Machines Corporation Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry
US9594724B2 (en) 2012-08-09 2017-03-14 International Business Machines Corporation Vector register file
TWI485560B (zh) * 2012-08-31 2015-05-21 Ibm 資料分析系統、快取裝置、與資料處理方法
US9785436B2 (en) * 2012-09-28 2017-10-10 Intel Corporation Apparatus and method for efficient gather and scatter operations
US9842046B2 (en) 2012-09-28 2017-12-12 Intel Corporation Processing memory access instructions that have duplicate memory indices
KR20150064197A (ko) 2012-12-26 2015-06-10 인텔 코포레이션 인접한 수집/분산 연산들의 통합
US9298375B2 (en) * 2013-02-27 2016-03-29 Vmware, Inc. Method and apparatus for returning reads in the presence of partial data unavailability
US9244684B2 (en) * 2013-03-15 2016-01-26 Intel Corporation Limited range vector memory access instructions, processors, methods, and systems
US9703562B2 (en) 2013-03-16 2017-07-11 Intel Corporation Instruction emulation processors, methods, and systems
US9477467B2 (en) * 2013-03-30 2016-10-25 Intel Corporation Processors, methods, and systems to implement partial register accesses with masked full register accesses
US11074169B2 (en) 2013-07-03 2021-07-27 Micron Technology, Inc. Programmed memory controlled data movement and timing within a main memory device
US9396113B2 (en) * 2013-08-06 2016-07-19 Oracle International Corporation Flexible configuration hardware streaming unit
CN103942162B (zh) * 2014-05-14 2020-06-09 清华大学 在存储器中进行多访问的方法、装置和存储系统
US9600442B2 (en) 2014-07-18 2017-03-21 Intel Corporation No-locality hint vector memory access processors, methods, systems, and instructions
CN105573831B (zh) * 2014-10-13 2019-11-26 龙芯中科技术有限公司 数据转移方法和装置
US9851970B2 (en) * 2014-12-23 2017-12-26 Intel Corporation Method and apparatus for performing reduction operations on a set of vector elements
US9582422B2 (en) 2014-12-24 2017-02-28 Intel Corporation Hardware prefetcher for indirect access patterns
US10296334B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit gather
US9971686B2 (en) 2015-02-23 2018-05-15 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
US10805392B2 (en) * 2015-08-13 2020-10-13 Advanced Micro Devices, Inc. Distributed gather/scatter operations across a network of memory nodes
JP6493088B2 (ja) * 2015-08-24 2019-04-03 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10503502B2 (en) 2015-09-25 2019-12-10 Intel Corporation Data element rearrangement, processors, methods, systems, and instructions
US10509726B2 (en) 2015-12-20 2019-12-17 Intel Corporation Instructions and logic for load-indices-and-prefetch-scatters operations
US20170177349A1 (en) 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Prefetch-Gathers Operations
US20170177360A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Scatter Operations
US20170177363A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Gather Operations
US9892767B2 (en) * 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9899070B2 (en) 2016-02-19 2018-02-20 Micron Technology, Inc. Modified decode for corner turn
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
JP6222859B2 (ja) * 2016-04-25 2017-11-01 インテル・コーポレーション ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック
JP6231155B2 (ja) * 2016-05-02 2017-11-15 インテル・コーポレーション ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック
US10191740B2 (en) 2017-02-28 2019-01-29 Intel Corporation Deinterleave strided data elements processors, methods, systems, and instructions
US11436010B2 (en) 2017-06-30 2022-09-06 Intel Corporation Method and apparatus for vectorizing indirect update loops
US11237970B2 (en) * 2018-11-07 2022-02-01 Micron Technology, Inc. Reduce data traffic between cache and memory via data access of variable sizes

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589065A (en) * 1983-06-30 1986-05-13 International Business Machines Corporation Mechanism for implementing one machine cycle executable trap instructions in a primitive instruction set computing system
GB2200483B (en) * 1987-01-22 1991-10-16 Nat Semiconductor Corp Memory referencing in a high performance microprocessor
US5182811A (en) * 1987-10-02 1993-01-26 Mitsubishi Denki Kabushiki Kaisha Exception, interrupt, and trap handling apparatus which fetches addressing and context data using a single instruction following an interrupt
JPH0769783B2 (ja) * 1987-11-16 1995-07-31 日本電気株式会社 例外処理方式
US5615349A (en) * 1990-09-04 1997-03-25 Mitsubishi Denki Kabushiki Kaisha Data processing system capable of execution of plural instructions in parallel
JP2581236B2 (ja) * 1989-11-16 1997-02-12 三菱電機株式会社 データ処理装置
CA2105806C (en) * 1992-09-18 2001-11-20 Paul V. Jeffs Apparatus for implementing interrupts in pipelined processors
US5745770A (en) * 1993-12-27 1998-04-28 Intel Corporation Method and apparatus for servicing simultaneous I/O trap and debug traps in a microprocessor
US5673426A (en) * 1995-02-14 1997-09-30 Hal Computer Systems, Inc. Processor structure and method for tracking floating-point exceptions
US6006030A (en) * 1995-02-17 1999-12-21 Vlsi Technology, Inc. Microprocessor with programmable instruction trap for deimplementing instructions
US5632028A (en) * 1995-03-03 1997-05-20 Hal Computer Systems, Inc. Hardware support for fast software emulation of unimplemented instructions
US5966529A (en) * 1995-05-15 1999-10-12 Zsp Corporation Processor having auxiliary operand register file and complementary arrangements for non-disruptively performing adjunct execution
US5680620A (en) * 1995-06-30 1997-10-21 Dell Usa, L.P. System and method for detecting access to a peripheral device using a debug register
US5812439A (en) * 1995-10-10 1998-09-22 Microunity Systems Engineering, Inc. Technique of incorporating floating point information into processor instructions
US5933618A (en) * 1995-10-30 1999-08-03 Advanced Micro Devices, Inc. Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction
US6263401B1 (en) * 1997-09-30 2001-07-17 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for transferring data between a register stack and a memory resource
US20030074530A1 (en) * 1997-12-11 2003-04-17 Rupaka Mahalingaiah Load/store unit with fast memory data access mechanism
US6049876A (en) * 1998-02-09 2000-04-11 Motorola, Inc. Data processing system and method which detect unauthorized memory accesses
US6044454A (en) * 1998-02-19 2000-03-28 International Business Machines Corporation IEEE compliant floating point unit
JP2000339177A (ja) * 1999-05-31 2000-12-08 Mitsubishi Electric Corp Eit処理機能を備えるマイクロプロセッサ及びeit処理方法
US6408379B1 (en) * 1999-06-10 2002-06-18 Advanced Micro Devices, Inc. Apparatus and method for executing floating-point store instructions in a microprocessor
US6374345B1 (en) * 1999-07-22 2002-04-16 Advanced Micro Devices, Inc. Apparatus and method for handling tiny numbers using a super sticky bit in a microprocessor
US6675292B2 (en) * 1999-08-13 2004-01-06 Sun Microsystems, Inc. Exception handling for SIMD floating point-instructions using a floating point status register to report exceptions
US6542988B1 (en) * 1999-10-01 2003-04-01 Sun Microsystems, Inc. Sending both a load instruction and retrieved data from a load buffer to an annex prior to forwarding the load data to register file
JP3762608B2 (ja) * 2000-03-10 2006-04-05 富士通株式会社 計算機とその制御方法
US6704862B1 (en) * 2000-03-06 2004-03-09 Sun Microsystems, Inc. Method and apparatus for facilitating exception handling using a conditional trap instruction
US6615343B1 (en) * 2000-06-22 2003-09-02 Sun Microsystems, Inc. Mechanism for delivering precise exceptions in an out-of-order processor with speculative execution
GB2367648B (en) * 2000-10-03 2002-08-28 Sun Microsystems Inc Multiple trap avoidance mechanism
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
GB2392998B (en) * 2002-09-16 2005-07-27 Advanced Risc Mach Ltd Handling interrupts during multiple access program instructions
US20040236920A1 (en) * 2003-05-20 2004-11-25 Sheaffer Gad S. Methods and apparatus for gathering and scattering data associated with a single-instruction-multiple-data (SIMD) operation
US7356735B2 (en) * 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
US7216218B2 (en) * 2004-06-02 2007-05-08 Broadcom Corporation Microprocessor with high speed memory integrated in load/store unit to efficiently perform scatter and gather operations
JP2006039874A (ja) * 2004-07-26 2006-02-09 Fujitsu Ltd 情報処理装置
US7810083B2 (en) * 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US7526583B2 (en) * 2005-06-23 2009-04-28 International Business Machines Corporation Method and apparatus to launch write queue read data in a microprocessor recovery unit
JP2007193572A (ja) * 2006-01-19 2007-08-02 Seiko Epson Corp Cpu、集積回路装置、マイクロコンピュータ及び電子機器
US7502277B2 (en) * 2006-11-15 2009-03-10 Taiwan Semiconductor Manufacturing Co., Ltd. Word-line driver design for pseudo two-port memories
JP4978914B2 (ja) * 2007-10-19 2012-07-18 インテル・コーポレーション マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム
US8447962B2 (en) * 2009-12-22 2013-05-21 Intel Corporation Gathering and scattering multiple data elements
US7984273B2 (en) * 2007-12-31 2011-07-19 Intel Corporation System and method for using a mask register to track progress of gathering elements from memory

Also Published As

Publication number Publication date
CN102103483A (zh) 2011-06-22
TWI439929B (zh) 2014-06-01
JP5612061B2 (ja) 2014-10-22
DE102010053088A1 (de) 2011-06-30
US8447962B2 (en) 2013-05-21
TW201140434A (en) 2011-11-16
JP2011134318A (ja) 2011-07-07
US20110153983A1 (en) 2011-06-23
CN104317791A (zh) 2015-01-28
CN104317791B (zh) 2018-03-13
CN102103483B (zh) 2014-09-10
JP2013080490A (ja) 2013-05-02

Similar Documents

Publication Publication Date Title
JP5148680B2 (ja) 複数のデータ・エレメントの収集及び分散
US10114651B2 (en) Gathering and scattering multiple data elements
US10042814B2 (en) System and method for using a mask register to track progress of gathering and scattering elements between data registers and memory
US10387151B2 (en) Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
US6442707B1 (en) Alternate fault handler
US5944815A (en) Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
US6055650A (en) Processor configured to detect program phase changes and to adapt thereto
JP3678444B2 (ja) パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ
US5263153A (en) Monitoring control flow in a microprocessor
US20050055536A1 (en) Compiler instructions for vector transfer unit
CN103514009A (zh) 零周期加载
US6499116B1 (en) Performance of data stream touch events
US20200285470A1 (en) Cache Preload Operations Using Streaming Engine
US11119925B2 (en) Apparatus and method for managing capability metadata
US6542988B1 (en) Sending both a load instruction and retrieved data from a load buffer to an annex prior to forwarding the load data to register file
US20070162775A1 (en) Dynamically self-decaying device architecture
US6625726B1 (en) Method and apparatus for fault handling in computer systems
JP3170472B2 (ja) レジスタ・リマップ構造を有する情報処理システム及び方法
US6175909B1 (en) Forwarding instruction byte blocks to parallel scanning units using instruction cache associated table storing scan block boundary information for faster alignment
US6625720B1 (en) System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs
US20210132985A1 (en) Shadow latches in a shadow-latch configured register file for thread storage
US20030135717A1 (en) Method and apparatus for transferring vector data

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121030

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121128

R150 Certificate of patent or registration of utility model

Ref document number: 5148680

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151207

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250