JP4921665B2 - プレディケーションを用いたマスクに基づくパックされたデータからのデータ要素の選択的書き込み - Google Patents

プレディケーションを用いたマスクに基づくパックされたデータからのデータ要素の選択的書き込み Download PDF

Info

Publication number
JP4921665B2
JP4921665B2 JP2001525517A JP2001525517A JP4921665B2 JP 4921665 B2 JP4921665 B2 JP 4921665B2 JP 2001525517 A JP2001525517 A JP 2001525517A JP 2001525517 A JP2001525517 A JP 2001525517A JP 4921665 B2 JP4921665 B2 JP 4921665B2
Authority
JP
Japan
Prior art keywords
data element
currently selected
data
packed
storage location
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.)
Expired - Lifetime
Application number
JP2001525517A
Other languages
English (en)
Other versions
JP2003510682A (ja
JP2003510682A5 (ja
Inventor
ドュロン,カロル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2003510682A publication Critical patent/JP2003510682A/ja
Publication of JP2003510682A5 publication Critical patent/JP2003510682A5/ja
Application granted granted Critical
Publication of JP4921665B2 publication Critical patent/JP4921665B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30094Condition code generation, e.g. Carry, Zero flag

Description

【0001】
(発明の背景)
(発明の分野)
本発明は、コンピュータ・システムの分野に関する。より詳細には、本発明は、プレディケーション(predication)を用いたマスクに基づくパックされたデータからのデータ要素の選択的書込みに関する。
【0002】
(背景情報)
コンピュータ技術は、加速し続ける速さで発展を続けている。コンピュータが、主としてワード・プロセッシング・アプリケーションやスプレッドシート・アプリケーションのために使用される単なるビジネス・ツールであった時代はもう終わった。現在では、マルチメディア・アプリケーションの発展に伴い、コンピュータ・システムは、テレビジョンおよび家庭用ステレオ・システムにより近い一般的な家庭電化製品となった。実際、適切に構成されたコンピュータ・システム上で実行されるマルチメディア・アプリケーションがテレビジョン・セット、ラジオ、ビデオ再生装置等のように機能するので、コンピュータ・システムと他の家庭用電化製品との間の境界線はあいまいになってきている。したがって、コンピュータ・システムの市場における人気は、それらが含むメモリ量と、そのようなマルチメディア・アプリケーションを実行することができる速度によって決定することがしばしばある。
【0003】
当業者ならば、期待されるようになったオーディオおよびビデオの生き生きしたレンダリングを実現するために、マルチメディア・アプリケーションと通信アプリケーションは、少数のビットで表される大量データを処理することを必要とすることを理解するだろう。例えば、3Dグラフィックをレンダリングするために、個別データ・アイテムの比較的大きな集合(例えば、8ビットのデータ)を同様に処理しなければならない。
【0004】
このようなアプリケーションによって必要とされる1つの共通したオペレーションは、データ・アイテムの集合から選択されたデータ・アイテムをメモリに書き込むことである。所与のデータ・アイテムがメモリに書き込まれるべきかどうかはマスクによって決まる。データの移動する選択バイトに対する1つの手法は、一連のテスト、分岐、および書込みの命令を使用する。この手法によれば、対応するデータ・アイテムに対して1つまたは複数のマスク・ビットがテストされ、バイトをメモリに書き込むか、または書込みをバイパスするために分岐が使用される。しかし、この手法は、分岐の予測ミスのために性能を犠牲にするという難点がある。
【0005】
この分岐の予測ミスによる不利益を回避するために、パックされたデータをある記憶位置から別の記憶位置に書き込むためのSIMD「バイト・マスク・ライト(Byte Mask Write)」命令をサポートするために、単一命令多重データ処理(SIMD)プロセッサ・アーキテクチャが使用される(1998年3月31日出願の米国特許出願第09/052,802号参照のこと)。図1は、SIMDアーキテクチャでSIMDバイト・マスク・ライト命令を実施するための専用並列回路を示すブロック図である。図1は、MM1と標識され、第1のオペランドSRC1 100で示されている第1のSIMDレジスタからレジスタによって指定されるメモリ位置106に整数データを表す最大64ビットを移動するSIMDバイト・マスクド・クォッドワード移動命令(MASKMOVQ)を示す。その際、MM2と標識され、第2のオペランドSRC2 102によって示される第2のSIMDレジスタに置かれるバイト・パックド・データ・マスク(byte packed data mask)を使用する。レジスタMM1 100のバイト110と114は、レジスタMM2 102に記憶されているマスクのバイト108と112によって書き込み許可される。
【0006】
図1に示すように、このSIMDバイト・マスク・ライト命令は、パックされたデータ・アイテムの各バイトを並列に処理するために、プロセッサ内に専用回路を必要とする。この専用回路の並列であるという性質によって、比較的良好なプロセッサ処理能力が達成されるにも関わらず、この専用回路は貴重なダイ・エリアを必要とし、グラフィカルおよび類似のタイプの処理にのみ使用されるだけである。
【0007】
(発明の簡単な概要)
プレディケーションを用いたマスクに基づくパックされたデータからデータ要素を選択的に書き込むための方法および装置が開示される。本発明の一実施態様では、並列処理装置で、パックされたデータ・オペランドのデータ要素に対して下記の事項が実施される。すなわち、そのデータ要素が対応する記憶位置に書き込まれるように選択されているかどうかを示す、対応するパックされたデータ・マスク要素の1つまたは複数のビットから、そのデータ要素のプレディケイト値を決定すること、およびそのプレディケイト値に基づいてそのデータ要素を対応する記憶位置に記憶することである。
【0008】
本発明の特徴および利点は、以下の本発明の詳細な説明から明らかになろう。
【0009】
(発明の詳細な説明)
以下の説明では、説明のために、本発明の完全な理解を実現する目的で多くの詳細が記載されている。しかし、当業者には、本発明を実施するためにこれらの具体的な詳細が必ずしも必要ではないことが明らかになろう。他の事例では、本発明を不明瞭にしないように、よく知られた電子構造および電子回路をブロック図形式で示す。
【0010】
図2は、本発明の一実施形態によるコンピュータ・システム200の一実施形態を示すブロック図である。コンピュータ・システム200は、プロセッサ210、記憶装置220、およびバス215を備える。プロセッサ210は、バス215によって記憶装置220に結合されている。さらに、いくつかのユーザ入力/出力装置240(例えば、キーボード、マウス)もバス215に結合されている。プロセッサ210は、CISC、RISC、VLIW、またはハイブリッド・アーキテクチャ等の任意のタイプのアーキテクチャの中央処理装置を表す。さらに、プロセッサ210は、1つまたは複数のチップ上で実施することもできる。バス215は、1つまたは複数のバス210(例えば、AGP、PCI、ISA、X−Bus、VESA等)およびブリッジを表す。この実施形態は単一プロセッサのコンピュータ・システムに関して説明するが、本発明は、多重プロセッサのコンピュータ・システムで実施することも可能である。
【0011】
別の装置に加え、1つまたは複数のネットワーク・コントローラ255、TV放送単一受信機260、ファックス/モデム245、ビデオ・キャプチャ・カード235、およびオーディオ・カード250を任意選択でバス215に結合することができる。ネットワーク・コントローラ255は、1つまたは複数のネットワーク接続(例えば、イーサネット(登録商標)接続)を表す。ネットワークからのトラフィックをネットワーク・コントローラ255で受信する記憶装置220および媒体は、1つまたは複数の機械可読媒体を代表している。したがって、機械可読媒体は、機械(例えば、コンピュータ)が読み取れる形式で情報を記憶または伝送するための任意の機構を含む。例えば、機械可読媒体は、読取り専用メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュ・メモリ・デバイス、電子・光学・音響または他の形式の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号等)を含む。
【0012】
TV放送信号受信機260は、TV放送信号を受信するための装置を表し、一方、ファックス/モデム245は、データを表すアナログ信号を受信および/または送信するためのファックスおよび/またはモデムを代表している。イメージ・キャプチャ・カード235は、イメージをデジタル化するための1つまたは複数の装置(すなわち、スキャナ、カメラ等)を代表している。オーディオ・カード2590は、音声を入力および/または出力するための1つまたは複数の装置(例えば、マイクロフォン、スピーカ、磁気記憶装置、光学記憶装置等)を代表している。グラフィック・コントローラ・カード230もバス215に結合されている。グラフィック・コントローラ230は、イメージを生成するための1つまたは複数の装置(例えば、グラフィック・カード)を代表している。
【0013】
図2は、記憶装置220がデータ224およびプログラム・コード222を記憶しているということも示す。データ224は、1つまたは複数の形式で記憶されているデータ(例えば、パックされたデータ・フォーマット)を代表している。プログラム・コード222は、本発明の任意および/またはすべての技術を実施するために必須のコードを表す。具体的には、プログラム・コード222は、プレディケーションと並列データ処理を使用したマスク(例えば、SIMDバイト・マスク書込み命令のエミュレーション)に基づくパックされたデータからのデータ要素の効率的な選択的書込みをプロセッサ210に実施させる1つまたは複数の命令を含んでいる。当然ながら、記憶装置220は、本発明を理解するために必須ではない付加的なソフトウェア(図示せず)を好適に含んでいる。
【0014】
図2は、プロセッサ210がデコーダ216、一組のレジスタ214、実行ユニット212、内部バス211、およびプレディケーション回路213を含むことをも示す。当然ながら、プロセッサ210は、本発明を理解するために必須ではない付加的な回路も含んでいる。デコーダ216、レジスタ214、実行ユニット212、およびプレディケーション(predication)回路213は、内部バス211によって相互に結合されている。デコーダ216は、プロセッサ210によって受信された命令を制御信号および/またはマイクロコード・エントリポイントに復号するために使用される。これらの制御信号および/またはマイクロコード・エントリポイントに応答して、実行ユニット212は適切なオペレーションを実施する。デコーダ216は、任意の数の様々な機構を使用して実施することができる(例えば、参照用テーブル、ハードウェア実施、PLA等)。
【0015】
デコーダ216は、プロセッサ210にマスクに基づくパックされたデータからのデータ要素の選択的書込みをさせるための1つまたは複数の命令をサポートするための復号回路218を含んでいるように示してある。さらに、一実施形態では、プロセッサ210は、クロック・サイクルごとにそれらの1つまたは複数の命令を完結させることができるスーパスカラ・パイプライン・プロセッサである(すべてのデータ依存性およびパイプライン・フリーズを無視して)。これらの命令の他に、プロセッサ210は、複数の新しい命令および/または既存の汎用プロセッサにある命令と類似の複数の命令を実行可能にすることもできる。例えば、一実施形態では、プロセッサ210は、カリフォルニア州サンタクララのIntel社製、Pentium(登録商標)IIIプロセッサ等の既存プロセッサによって使用されるIntelアーキテクチャ命令と互換性のある命令セットをサポートする。
【0016】
実行ユニット212は、複数の命令を並列に処理することができる複数の並列処理装置219A〜219N(例えば、並列処理装置)を含んでいる。本発明の一実施形態では、実行ユニット212は、64ビットの書込みを実行することができるまでデータを記憶しておくための結合バッファ270も含んでいる。この結合バッファ270は、バッファが記憶されるべきデータを蓄積している間、バス215を別の目的で使用することを可能にすることによって、バス215を最大限に活用することを可能にする。しかし、64ビットと異なる幅を有する結合バッファ270またはバス215は本発明の範囲内にあるということ、これらは、処理装置の特定の細部において相当する相違点を生じさせることがあるということを理解されたい。
【0017】
レジスタ214は、制御/状態情報、数字データ、浮動小数点データ、パックされたデータ(数字および/または浮動小数点)、およびプレディケイト(predicate:述語)・データを含む情報を記憶するためのプロセッサ210上の記憶領域を表す。本発明の態様は、パックされたデータに関して動作するために記述された1つまたは複数の命令であり、また、1つまたは複数のこれらの命令を使用する方法であることが理解されよう。本発明のこれらの態様により、プレディケイト・データを記憶するために使用される記憶領域は重要ではない。本明細書では、図2を参照して説明した1つまたは複数のコンピュータ・システムを含めてデータを処理するための任意の機械を示すためにデータ処理システムという用語を使用する。
【0018】
本発明の一実施形態では、プレディケーション回路213は、プロセッサ216によってサポートされる命令セットのうちの任意の命令のために使用することができる一般的なプレディケーション回路である。プレディケーションは、すべての命令の条件付き実行を可能にする。したがってこの技術は、分岐自体の除去を可能にし、それによって予測ミスによる不利益を解消する。1998年1月26発行のMicroprocessor ReportのPeter Song著、「Demsytifying the EPIC and IA−64」と、1991年12月18日発行のMicroprocessor ReportのBrian Case著、「ARM Architecture Offers High Code Density」を参照されたい。一般的なプレディケーション・モデルが使用される場合の一実施形態が説明されているが、代替の実施形態は特定の命令(例えば、条件付き移動のタイプの命令)だけに関するプレディケーションをサポートするようにすることもできる。さらに、一実施形態は、マスクが、データ要素が書き込まれるマスクをデータ要素と同じサイズにすることを可能にするために使用されるように説明されているが、一方、代替の実施形態では、マスクは異なるサイズであってよい(各マスクが単一ビットから構成されることを含めて)。
【0019】
図3は、本発明の一実施形態による流れ図である。ブロック305では、選択的に書き込まれるべきパックされたデータ・オペランドの現在選択されているデータ要素に対する書き込み可能な記憶位置を識別する初期値が決定される。ブロック305から、プロセスはブロック310に進む。
【0020】
ブロック310では、現在選択されているデータ要素に対するプレディケイト値が決定される。本発明の一実施形態では、プレディケイト値は、テスト・ビット(「tbit」)命令を使用することによって決定される。この実施形態によれば、tbit命令は、選択的に書き込まれるべきパックされたデータ・オペランドの現在選択されているデータ要素に対応するパックされたマスク・データ要素のビットをテストするために使用される。このプレディケイト値は、様々な記憶媒体(例えば、専用プレディケイト・レジスタ、汎用レジスタ等)に記憶することができる。
【0021】
図3のブロック320では、ブロック310で決定されたプレディケイト値に関して判断が行われる。ブロック320では、プレディケイト値が真であればプロセスの流れはブロック330に進む。そうでない場合、プロセスの流れはブロック350に進む。
【0022】
ブロック330では、パックされたデータ・オペランドの現在選択されているデータ要素が記憶される(図2に関しては、現在選択されているデータ要素は結合バッファに記憶することができる)。ブロック330の後、プロセスはブロック350に進む。
【0023】
図3のブロック350では、現在選択されているデータ要素が、処理されるべきパックされたデータ・オペランドの最後のデータ要素であるかどうかについてもう1つの判断がなされる。現在選択されているデータ要素が処理されるべき最後のデータ要素である場合、プロセスの流れはこの手順を終了するように進む。そうでない場合、プロセスの流れはブロック350からブロック360に進む。
【0024】
図3のブロック360では、記憶位置に関連付けられた値が増分される。本発明の一実施形態では、この値は汎用レジスタ内に置かれる。しかし、記憶位置に関連付けられた値は、様々な記憶媒体内に置くこともできる。次に、図3のブロック370では、パックされたデータ・オペランドは1つのデータ要素の幅だけシフトされる(例えば、パックされたデータ・オぺランドの最上位データ要素を現在選択されているデータ・アイテムであると仮定すると、パックされたデータ・オペランドは左シフトされ、その結果、次に下位のデータ要素が最上位データ要素、すなわち現在選択されているデータ要素になる)。次いでこのプロセスの流れは、370からブロック310に戻り、最後のデータ要素が処理されるまでこのプロセスは繰り返される。
【0025】
パックされたデータ・オペランドの現在選択されているデータ要素を選択するためにシフティングが用いられる一実施形態を説明したが、代替の実施形態は別の技術(例えば、ポインタ、指示を可能にするサポート命令(下記のtbit命令を参照のこと)等)を使用することができる。さらに、図3は順次処理を例示するものと解釈することができるが、オペレーションを異なる順序で実行することができ(例えば、コンパイル・スケジューリング、ループ展開、ハードウェアのout−of−order実行、等)、様々なオペレーションを並列で実行することができ、かつ/または様々な他のオペレーションを流れの所々に挿入することができることも理解されたい。
【0026】
本発明の一実施形態は、概念的に以下のようにとらえることができる。
R2=アドレス・レジスタ
R3=64ビットのデータ・レジスタ
R4=対応するマスク要素を有するMask Register(x0、x1、...、x7)
R3に記憶されているパックされたデータ・オペランドから選択的にバイト・サイズ・データ要素を書き込むためのコード・シーケンス
【表1】
Figure 0004921665
【0027】
レジスタR2は、記憶位置に関連付けられた値を含んでいる。レジスタR3は、この例では、8つのデータ要素に分割される64ビットのパックされたデータを含んでいる。レジスタR4は、パックされたマスク・オペランドを、R3の8つのデータ要素に対応するx0〜x7の8つのマスク要素と共に含んでいる。
【0028】
命令の第1のグループで、コード・シーケンスはtbit命令を使用してプレディケイト値を決定する。この実施形態では、tbitはパックされたマスク要素の最上位ビットx0をテストする。このビットが1の場合、プレディケイトp1は真にセットされ、そうでない場合、p1は偽にセットされる。代替の実施形態は、ビット値が0の場合にプレディケイトp1を真に等しくセットし、反対に、ビット値が1の場合にプレディケイトp1を偽にセットする場合がある。tbit命令は、対応するパックされたマスク要素の任意のビットをテストすることができることを理解されたい。
【0029】
命令の第2のグループでは、R4の値に関連付けられる記憶位置にこの例では1バイトを条件付きで記憶するために、以前記憶されたプレディケーション値が使用される。同様に、命令の第2のグループを通じてR2は増分され、R3は右に8ビットだけシフトされ、プレディケイトp1は、パックされたマスク要素x1がx0の代わりに使用されることを除いて、命令の第1のグループと同様の方法でリセットされる。多重並列処理装置は、命令の第2のグループのすべての4つの命令を1つまたは複数の同じクロック・サイクルで並列処理することを可能にする。命令の第3から第7のグループは、命令の各グループが様々なパックされたマスク要素を使用することを除いて、命令の第2のグループと同様の方法で続行する。命令の第9のグループは、R4内の値に関連付けられた記憶位置に最後のバイトを条件付きで記憶するためにプレディケーションを使用する。この例では、シーケンスは9クロック・サイクルを要する。しかし、クロック・サイクルの量は、プロセッサの実施態様および/またはパックされたデータ・オペランドのデータ要素の数によって異なる場合がある。
【0030】
したがって、本発明は、専用のSIMDバイト・マスク・ライト回路の使用を必要としない。むしろ、プレディケーションの使用は、条件付き分岐の回避、したがって分岐の予測ミスによる性能損失の回避を可能にする。多重並列処理装置は、改善されたプロセッサ処理能力を可能にする(例えば、本発明の一実施形態は、上記各グループの命令を並列に処理するために必要な数の並列処理装置を有する)。この並列という特性とプレディケーションによって、本発明は、バイト・マスク・ライトの専用SIMD回路の実装に匹敵する性能を有することができる。さらに、表1にある命令、したがってそれらをサポートするためのプロセッサの回路は、使用の分野が遥かに狭い特化/専用バイト・マスク書込み命令回路(例えば、グラフィックス処理)と比較して、より多目的に使用される。
【0031】
本発明は、処理システムにおいて様々なレベルに実装することができる。例えばプロセッサ・アーキテクチャによって、上記のコード・シーケンスは手動で符号化されプロセッサに供給される、単一命令をコンパイルするコンパイラによって生成される、単一命令の受信に応答してプロセッサ内のデコーダによって生成される等々が可能である。
【0032】
図4は、本発明の一実施形態によるコンピュータ・システムの選択された一部を示す図である。コンピュータ・システムのこの選択された一部は、プロセッサ410、記憶装置420、およびバス415を含んでいる。図4のプロセッサ410は、本発明を理解するためには必須でない付加的な回路を含んでいる。
【0033】
プロセッサ410は、2つの異なる命令セット(例えば、64ビットの命令セットと32ビットの命令セット)を実行するように設計されている。本明細書では、プロセッサによって外部から受信される命令を示すために、マクロ命令という用語を使用する。1つの具体的な実施形態では、第1の命令セット410の命令を制御信号および/またはマイクロコード・エントリポイントに復号するためにデコーダ416が使用される。この場合、第1の命令セット410の命令は、プロセッサ410によって外部から受信された場合はマクロ命令である。さらに、第2の命令セット420の命令(例えば、IA32Intel Architecture命令)を、変換後にデコーダ416によって処理される第1の命令セット410に変換するためにマイクロコード・コンバータ417が使用される。すなわち、第2の命令セット420の少なくとも特定のマクロ命令は、第1の命令セット410からの命令で構成される第1のレベルのマイクロコードに変換される。この場合、第1の命令セット410からの命令は、プロセッサ410に対して内部的に生成される場合はマイクロ命令である。一実施形態では、この変換はマイクロコードROMを使用して達成される。例えば、一実施形態では、単一SIMDバイト・マスク・ライトマイクロ命令をマイクロコード・コンバータ417に供給するとができ、そこでプレディケーションを用いたマスクに応じたパックされたデータからのデータ要素を選択的に書き込むために、第1の命令セット410からの適切な命令(ここではマイクロ命令として動作する)に変換される。さらに、データ要素を選択的に書き込むための第1の命令セット410からの同じ命令を、デコーダ416によって直接的にマクロ命令として受信することもできる。
【0034】
以上、本発明を具体的な例示的実施形態を参照しながら説明した。しかし、この開示の特典を受ける人物には、本発明のより広範な趣旨および範囲から逸脱せずに、これらの実施形態に対して様々な修正形態および変更を行うことができることが明らかになろう。したがって、本明細書および図面は、限定的なものではなく説明的なものとみなされるべきである。
【図面の簡単な説明】
【図1】 SIMDアーキテクチャでSIMDバイト・マスク・ライト命令を実施するための専用並列回路を示すブロック図である。
【図2】 本発明の一実施形態によるコンピュータ・システムを示すブロック図である。
【図3】 本発明の一実施形態による流れ図である。
【図4】 本発明の一実施形態によるコンピュータ・システムの選択された部分を示す図である。

Claims (4)

  1. 並列処理装置を有するコンピュータにおいて実行される方法であって、
    パックされたデータ・オペランドの1つのデータ要素を、現在選択されているデータ要素として選択するステップであって、前記パックされたデータ・オペランドのデータ要素は、書き込むためにそのデータ要素が選択されているかどうかを示す対応するマスク・データ要素を有する、ステップと、
    前記現在選択されているデータ要素に対する現在選択されている記憶位置を示す値を記憶するステップと、
    前記対応するマスク・データ要素の1つまたは複数のビットから、前記現在選択されているデータ要素用のプレディケイト値を決定するステップと、
    前記並列処理装置が、前記プレディケイト値に基いて前記現在選択されているデータ要素を前記現在選択されている記憶位置に書き込む工程と、前記現在選択されている記憶位置を示す前記値を増分する工程と、前記パックされたデータ・オペランドの他のデータ要素を前記現在選択されているデータ要素として選択し、かつ前記対応するマスク・データ要素の1つ又はそれ以上のビットから前記データ要素用のプレディケイト値を決定する工程とを実行することによって、前記パックされたデータ・オペランドから前記現在選択されているデータ要素を選択的に書き込むステップと、
    前記パックされたデータ・オペランドのデータ要素の最終要素が前記現在選択されているデータ要素になるまで前記ステップを繰返すステップと、そして
    前記プレディケイト値に基いて前記現在選択されている記憶位置に前記現在選択されているデータ要素を書き込むステップと
    を含む方法。
  2. 並列処理装置を有するコンピュータにおいて実行される方法であって、
    パックされたデータ・オペランドの1つのデータ要素を、現在選択されているデータ要素として選択するステップであって、前記パックされたデータ・オペランドのデータ要素は、書き込むためにそのデータ要素が選択されているかどうかを示す対応するマスク・データ要素を有する、ステップと、
    前記現在選択されているデータ要素に対する現在選択されている記憶位置を示す値を記憶するステップと、
    前記対応するマスク・データ要素の1つまたは複数のビットから、前記現在選択されているデータ要素用のプレディケイト値を決定するステップと、
    前記並列処理装置が、前記プレディケイト値に基いて前記現在選択されているデータ要素を前記現在選択されている記憶位置に書き込む工程と、前記現在選択されている記憶位置を示す前記値を増分する工程と、前記パックされたデータ・オペランドを1つのデータ要素だけシフトし、かつ前記対応するマスク・データ要素の1つ又はそれ以上のビットから前記データ要素用のプレディケイト値を決定する工程とを実行することによって、前記パックされたデータ・オペランドから前記現在選択されているデータ要素を選択的に書き込むステップと、
    前記パックされたデータ・オペランドのデータ要素の最終要素が前記現在選択されているデータ要素になるまで前記ステップを繰返すステップと、そして
    前記プレディケイト値に基いて前記現在選択されている記憶位置に前記現在選択されているデータ要素を書き込むステップと
    を含む方法。
  3. 並列処理装置を有するコンピュータにおいて実行される方法であって、
    パックされたデータ・オペランドの1つのデータ要素を、現在選択されているデータ要素として選択するステップであって、前記パックされたデータ・オペランドのデータ要素は、書き込むためにそのデータ要素が選択されているかどうかを示す対応するマスク・データ要素を有する、ステップと、
    前記現在選択されているデータ要素に対する現在選択されている記憶位置を示す値を記憶するステップと、
    前記対応するマスク・データ要素の1つまたは複数のビットから、前記現在選択されているデータ要素用のプレディケイト値を決定するステップと、
    前記並列処理装置が、前記プレディケイト値に基いて前記現在選択されているデータ要素を前記現在選択されている記憶位置に書き込む工程と、前記現在選択されている記憶位置を示す前記値を増分する工程と、前記パックされたデータ・オペランドの他のデータ要素を前記現在選択されているデータ要素として選択し、かつ前記対応するマスク・データ要素の1つ又はそれ以上のビットから、テスト・ビット命令を使用することにより前記データ要素用のプレディケイト値を決定する工程とを実行することによって、前記パックされたデータ・オペランドから前記現在選択されているデータ要素を選択的に書き込むステップと、
    前記パックされたデータ・オペランドのデータ要素の最終要素が前記現在選択されているデータ要素になるまで前記ステップを繰返すステップと、そして
    前記プレディケイト値に基いて前記現在選択されている記憶位置に前記現在選択されているデータ要素を書き込むステップと
    を含む方法。
  4. パックされたデータ・オペランドの各パックされたデータ要素を対応する記憶位置に選択的に書き込むための一つまたは複数の命令のセットをデコードするデコーダと、
    前記対応する記憶位置に書き込むために前記パックされたデータ要素が選択されているか否かを示すパックされたデータ・マスク要素の1つまたは複数のビットに基づいて前記パックされたデータ要素の各々に対してプレディケイト値を決定するために前記デコーダに接続されたプレディケイション回路と、そして
    前記デコーダに接続された実行ユニットであって、多重並列処理装置と結合バッファを有する実行ユニットと
    を有するプロセッサにおいて、
    前記プレディケイション回路が、データ要素用のプレディケイト値を決定し、
    前記多重並列処理装置が、前記プレディケイト値に基いて前記現在選択されているデータ要素を前記現在選択されている前記結合バッファの記憶位置に書き込む工程と、前記現在選択されている記憶位置を示す前記値を増分する工程と、前記パックされたデータ・オペランドの他のデータ要素を前記現在選択されているデータ要素として選択し、かつ前記対応するマスク・データ要素の1つ又はそれ以上のビットから前記データ要素用のプレディケイト値を決定する工程とを実行することによって、前記パックされたデータ・オペランドから前記現在選択されているデータ要素を選択的に前記結合バッファに記憶し、
    前記実行ユニットが、前記パックされたデータ・オペランドのデータ要素の最終要素が前記現在選択されているデータ要素になるまで前記多重並列処理装置による処理を繰返し、そして
    前記記憶した結合バッファを前記対応する記憶位置に書き込む
    ことを特徴とするプロセッサ。
JP2001525517A 1999-09-20 2000-08-29 プレディケーションを用いたマスクに基づくパックされたデータからのデータ要素の選択的書き込み Expired - Lifetime JP4921665B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/399,612 1999-09-20
US09/399,612 US6484255B1 (en) 1999-09-20 1999-09-20 Selective writing of data elements from packed data based upon a mask using predication
PCT/US2000/023721 WO2001022216A1 (en) 1999-09-20 2000-08-29 Selective writing of data elements from packed data based upon a mask using predication

Publications (3)

Publication Number Publication Date
JP2003510682A JP2003510682A (ja) 2003-03-18
JP2003510682A5 JP2003510682A5 (ja) 2010-11-18
JP4921665B2 true JP4921665B2 (ja) 2012-04-25

Family

ID=23580223

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001525517A Expired - Lifetime JP4921665B2 (ja) 1999-09-20 2000-08-29 プレディケーションを用いたマスクに基づくパックされたデータからのデータ要素の選択的書き込み

Country Status (8)

Country Link
US (2) US6484255B1 (ja)
JP (1) JP4921665B2 (ja)
CN (1) CN100440138C (ja)
AU (1) AU6945400A (ja)
DE (1) DE10085391T1 (ja)
GB (1) GB2371135B (ja)
HK (1) HK1044202B (ja)
WO (1) WO2001022216A1 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
JP3964593B2 (ja) * 2000-02-24 2007-08-22 富士通株式会社 半導体記憶装置
US7155601B2 (en) * 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
US7861071B2 (en) * 2001-06-11 2010-12-28 Broadcom Corporation Conditional branch instruction capable of testing a plurality of indicators in a predicate register
US20040054877A1 (en) 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7624138B2 (en) 2001-10-29 2009-11-24 Intel Corporation Method and apparatus for efficient integer transform
US7631025B2 (en) * 2001-10-29 2009-12-08 Intel Corporation Method and apparatus for rearranging data between multiple registers
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
US7725521B2 (en) * 2001-10-29 2010-05-25 Intel Corporation Method and apparatus for computing matrix transformations
US7739319B2 (en) * 2001-10-29 2010-06-15 Intel Corporation Method and apparatus for parallel table lookup using SIMD instructions
JP3773195B2 (ja) * 2002-10-25 2006-05-10 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリモジュール、情報処理装置、メモリモジュールに関する初期設定方法、並びにプログラム
US7275149B1 (en) * 2003-03-25 2007-09-25 Verisilicon Holdings (Cayman Islands) Co. Ltd. System and method for evaluating and efficiently executing conditional instructions
US7395531B2 (en) 2004-06-07 2008-07-01 International Business Machines Corporation Framework for efficient code generation using loop peeling for SIMD loop code with multiple misaligned statements
US7475392B2 (en) * 2004-06-07 2009-01-06 International Business Machines Corporation SIMD code generation for loops with mixed data lengths
US8549501B2 (en) 2004-06-07 2013-10-01 International Business Machines Corporation Framework for generating mixed-mode operations in loop-level simdization
US7478377B2 (en) * 2004-06-07 2009-01-13 International Business Machines Corporation SIMD code generation in the presence of optimized misaligned data reorganization
US7367026B2 (en) * 2004-06-07 2008-04-29 International Business Machines Corporation Framework for integrated intra- and inter-loop aggregation of contiguous memory accesses for SIMD vectorization
US7386842B2 (en) * 2004-06-07 2008-06-10 International Business Machines Corporation Efficient data reorganization to satisfy data alignment constraints
US7480787B1 (en) * 2006-01-27 2009-01-20 Sun Microsystems, Inc. Method and structure for pipelining of SIMD conditional moves
US8156310B2 (en) * 2006-09-11 2012-04-10 International Business Machines Corporation Method and apparatus for data stream alignment support
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US20080077772A1 (en) * 2006-09-22 2008-03-27 Ronen Zohar Method and apparatus for performing select operations
US8135975B2 (en) * 2007-03-09 2012-03-13 Analog Devices, Inc. Software programmable timing architecture
US9529592B2 (en) 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8078836B2 (en) 2007-12-30 2011-12-13 Intel Corporation Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits
BR112014004603A2 (pt) * 2011-09-26 2017-06-13 Intel Corp instrução e lógica para prover cargas e armazenamentos de vetor com funcionalidade de passos e mascaramento
WO2013077884A1 (en) * 2011-11-25 2013-05-30 Intel Corporation Instruction and logic to provide conversions between a mask register and a general purpose register or memory
US9336000B2 (en) * 2011-12-23 2016-05-10 Intel Corporation Instruction execution unit that broadcasts data values at different levels of granularity
WO2013095618A1 (en) 2011-12-23 2013-06-27 Intel Corporation Instruction execution that broadcasts and masks data values at different levels of granularity
WO2013095604A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing mask bit compression
CN107967149B (zh) * 2011-12-23 2021-12-10 英特尔公司 从源写掩码寄存器在目的地写掩码寄存器中设置输出掩码的系统、装置和方法
WO2013095599A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing a double blocked sum of absolute differences
CN104011652B (zh) * 2011-12-30 2017-10-27 英特尔公司 打包选择处理器、方法、系统和指令
US9304771B2 (en) * 2013-02-13 2016-04-05 International Business Machines Corporation Indirect instruction predication
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US9612840B2 (en) * 2014-03-28 2017-04-04 Intel Corporation Method and apparatus for implementing a dynamic out-of-order processor pipeline
US10133570B2 (en) * 2014-09-19 2018-11-20 Intel Corporation Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6059469A (ja) * 1983-09-09 1985-04-05 Nec Corp ベクトル処理装置
JPH02204861A (ja) * 1989-02-02 1990-08-14 Nec Corp ベクトルデータ処理装置
JPH09198231A (ja) * 1996-01-22 1997-07-31 Nec Corp 演算処理装置
JPH1153189A (ja) * 1997-07-31 1999-02-26 Toshiba Corp 演算装置、演算方法及びコンピュータ読み取り可能な記録媒体
JP2002512398A (ja) * 1998-04-23 2002-04-23 インフィニオン テクノロジーズ ノース アメリカ コーポレイション パックデータ上でシフト演算を実行するための方法および装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4141005A (en) * 1976-11-11 1979-02-20 International Business Machines Corporation Data format converting apparatus for use in a digital data processor
US4217638A (en) * 1977-05-19 1980-08-12 Tokyo Shibaura Electric Co., Ltd. Data-processing apparatus and method
JPS59135548A (ja) 1983-01-22 1984-08-03 Toshiba Corp 演算装置
JPS6089274A (ja) * 1983-10-20 1985-05-20 Nec Corp ベクトルマスク制御システム
US5249266A (en) * 1985-10-22 1993-09-28 Texas Instruments Incorporated Data processing apparatus with self-emulation capability
US5423010A (en) * 1992-01-24 1995-06-06 C-Cube Microsystems Structure and method for packing and unpacking a stream of N-bit data to and from a stream of N-bit data words
JPH05250254A (ja) * 1992-03-04 1993-09-28 Nec Corp 記憶回路
US5467413A (en) * 1993-05-20 1995-11-14 Radius Inc. Method and apparatus for vector quantization for real-time playback on low cost personal computers
US5630075A (en) * 1993-12-30 1997-05-13 Intel Corporation Write combining buffer for sequentially addressed partial line operations originating from a single instruction
US5751982A (en) * 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US5680332A (en) 1995-10-30 1997-10-21 Motorola, Inc. Measurement of digital circuit simulation test coverage utilizing BDDs and state bins
US5784607A (en) * 1996-03-29 1998-07-21 Integrated Device Technology, Inc. Apparatus and method for exception handling during micro code string instructions
US5996066A (en) * 1996-10-10 1999-11-30 Sun Microsystems, Inc. Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions
US5991531A (en) * 1997-02-24 1999-11-23 Samsung Electronics Co., Ltd. Scalable width vector processor architecture for efficient emulation
US6052769A (en) * 1998-03-31 2000-04-18 Intel Corporation Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction
US6173393B1 (en) * 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US6067617A (en) 1998-04-07 2000-05-23 International Business Machines Corporation Specialized millicode instructions for packed decimal division
DE69930893T2 (de) 1998-06-25 2006-11-16 Texas Instruments Inc., Dallas Digitaler Signalprozessor für Daten mit grosser Bitlänge
US20020002666A1 (en) * 1998-10-12 2002-01-03 Carole Dulong Conditional operand selection using mask operations
US6484255B1 (en) 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
US7480787B1 (en) * 2006-01-27 2009-01-20 Sun Microsystems, Inc. Method and structure for pipelining of SIMD conditional moves
US9529592B2 (en) * 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6059469A (ja) * 1983-09-09 1985-04-05 Nec Corp ベクトル処理装置
JPH02204861A (ja) * 1989-02-02 1990-08-14 Nec Corp ベクトルデータ処理装置
JPH09198231A (ja) * 1996-01-22 1997-07-31 Nec Corp 演算処理装置
JPH1153189A (ja) * 1997-07-31 1999-02-26 Toshiba Corp 演算装置、演算方法及びコンピュータ読み取り可能な記録媒体
JP2002512398A (ja) * 1998-04-23 2002-04-23 インフィニオン テクノロジーズ ノース アメリカ コーポレイション パックデータ上でシフト演算を実行するための方法および装置

Also Published As

Publication number Publication date
CN100440138C (zh) 2008-12-03
GB2371135B (en) 2004-03-31
WO2001022216A1 (en) 2001-03-29
DE10085391T1 (de) 2002-12-12
HK1044202A1 (en) 2002-10-11
GB2371135A (en) 2002-07-17
US20030046520A1 (en) 2003-03-06
JP2003510682A (ja) 2003-03-18
CN1391668A (zh) 2003-01-15
US6484255B1 (en) 2002-11-19
AU6945400A (en) 2001-04-24
HK1044202B (zh) 2004-12-03
GB0208629D0 (en) 2002-05-22

Similar Documents

Publication Publication Date Title
JP4921665B2 (ja) プレディケーションを用いたマスクに基づくパックされたデータからのデータ要素の選択的書き込み
JP6408524B2 (ja) 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法
US6356994B1 (en) Methods and apparatus for instruction addressing in indirect VLIW processors
JP4986431B2 (ja) プロセッサ
TWI270007B (en) Method and apparatus for shuffling data
TWI486810B (zh) 在狀態機晶格中之計數器操作
US20140129802A1 (en) Methods, apparatus, and instructions for processing vector data
JP6055549B2 (ja) ベクトルパックコンフリクトテストを実行する方法、コンピュータプロセッサ、プログラム、および機械可読記憶媒体
JP2001202245A (ja) 改良式命令セットアーキテクチャを有するマイクロプロセッサ
CN107003845B (zh) 用于在掩码寄存器和向量寄存器之间可变地扩展的方法和装置
TW201732564A (zh) 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置
KR101624786B1 (ko) 기입마스크 레지스터의 트레일링 최하위 마스킹 비트를 결정하는 시스템, 장치, 및 방법
US5119324A (en) Apparatus and method for performing arithmetic functions in a computer system
KR20130140143A (ko) 마스크 레지스터를 이용한 점프를 위한 시스템, 장치, 및 방법
US5053986A (en) Circuit for preservation of sign information in operations for comparison of the absolute value of operands
JP3756409B2 (ja) データハザード検出システム
US6542989B2 (en) Single instruction having op code and stack control field
US6026486A (en) General purpose processor having a variable bitwidth
TWI733718B (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
US7047396B1 (en) Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
US6314505B1 (en) Processor and method for accessing rectangular areas in memory
JP3756411B2 (ja) データハザードを検出するシステム
US7757066B2 (en) System and method for executing variable latency load operations in a date processor
JP3953275B2 (ja) 汎用スタックを提供する方法および装置
TW201810020A (zh) 用於累乘的系統、設備及方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040113

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070829

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070829

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070906

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100601

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100901

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100908

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101001

A524 Written submission of copy of amendment under section 19 (pct)

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20101001

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110719

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111019

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111026

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111121

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111129

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111129

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: 20120110

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120203

R150 Certificate of patent or registration of utility model

Ref document number: 4921665

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: 20150210

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

EXPY Cancellation because of completion of term