(57)【特許請求の範囲】
【請求項１】
並列処理装置を有するコンピュータにおいて実行される方法であって、
パックされたデータ・オペランドの１つのデータ要素を、現在選択されているデータ要素として選択するステップであって、前記パックされたデータ・オペランドのデータ要素は、書き込むためにそのデータ要素が選択されているかどうかを示す対応するマスク・データ要素を有する、ステップと、
前記現在選択されているデータ要素に対する現在選択されている記憶位置を示す値を記憶するステップと、
前記対応するマスク・データ要素の１つまたは複数のビットから、前記現在選択されているデータ要素用のプレディケイト値を決定するステップと、
前記並列処理装置が、前記プレディケイト値に基いて前記現在選択されているデータ要素を前記現在選択されている記憶位置に書き込む工程と、前記現在選択されている記憶位置を示す前記値を増分する工程と、前記パックされたデータ・オペランドの他のデータ要素を前記現在選択されているデータ要素として選択し、かつ前記対応するマスク・データ要素の１つ又はそれ以上のビットから前記データ要素用のプレディケイト値を決定する工程とを実行することによって、前記パックされたデータ・オペランドから前記現在選択されているデータ要素を選択的に書き込むステップと、
前記パックされたデータ・オペランドのデータ要素の最終要素が前記現在選択されているデータ要素になるまで前記ステップを繰返すステップと、そして
前記プレディケイト値に基いて前記現在選択されている記憶位置に前記現在選択されているデータ要素を書き込むステップと
を含む方法。
【請求項２】
並列処理装置を有するコンピュータにおいて実行される方法であって、
パックされたデータ・オペランドの１つのデータ要素を、現在選択されているデータ要素として選択するステップであって、前記パックされたデータ・オペランドのデータ要素は、書き込むためにそのデータ要素が選択されているかどうかを示す対応するマスク・データ要素を有する、ステップと、
前記現在選択されているデータ要素に対する現在選択されている記憶位置を示す値を記憶するステップと、
前記対応するマスク・データ要素の１つまたは複数のビットから、前記現在選択されているデータ要素用のプレディケイト値を決定するステップと、
前記並列処理装置が、前記プレディケイト値に基いて前記現在選択されているデータ要素を前記現在選択されている記憶位置に書き込む工程と、前記現在選択されている記憶位置を示す前記値を増分する工程と、前記パックされたデータ・オペランドを１つのデータ要素だけシフトし、かつ前記対応するマスク・データ要素の１つ又はそれ以上のビットから前記データ要素用のプレディケイト値を決定する工程とを実行することによって、前記パックされたデータ・オペランドから前記現在選択されているデータ要素を選択的に書き込むステップと、
前記パックされたデータ・オペランドのデータ要素の最終要素が前記現在選択されているデータ要素になるまで前記ステップを繰返すステップと、そして
前記プレディケイト値に基いて前記現在選択されている記憶位置に前記現在選択されているデータ要素を書き込むステップと
を含む方法。
【請求項３】
並列処理装置を有するコンピュータにおいて実行される方法であって、
パックされたデータ・オペランドの１つのデータ要素を、現在選択されているデータ要素として選択するステップであって、前記パックされたデータ・オペランドのデータ要素は、書き込むためにそのデータ要素が選択されているかどうかを示す対応するマスク・データ要素を有する、ステップと、
前記現在選択されているデータ要素に対する現在選択されている記憶位置を示す値を記憶するステップと、
前記対応するマスク・データ要素の１つまたは複数のビットから、前記現在選択されているデータ要素用のプレディケイト値を決定するステップと、
前記並列処理装置が、前記プレディケイト値に基いて前記現在選択されているデータ要素を前記現在選択されている記憶位置に書き込む工程と、前記現在選択されている記憶位置を示す前記値を増分する工程と、前記パックされたデータ・オペランドの他のデータ要素を前記現在選択されているデータ要素として選択し、かつ前記対応するマスク・データ要素の１つ又はそれ以上のビットから、テスト・ビット命令を使用することにより前記データ要素用のプレディケイト値を決定する工程とを実行することによって、前記パックされたデータ・オペランドから前記現在選択されているデータ要素を選択的に書き込むステップと、
前記パックされたデータ・オペランドのデータ要素の最終要素が前記現在選択されているデータ要素になるまで前記ステップを繰返すステップと、そして
前記プレディケイト値に基いて前記現在選択されている記憶位置に前記現在選択されているデータ要素を書き込むステップと
を含む方法。
【請求項４】
パックされたデータ・オペランドの各パックされたデータ要素を対応する記憶位置に選択的に書き込むための一つまたは複数の命令のセットをデコードするデコーダと、
前記対応する記憶位置に書き込むために前記パックされたデータ要素が選択されているか否かを示すパックされたデータ・マスク要素の１つまたは複数のビットに基づいて前記パックされたデータ要素の各々に対してプレディケイト値を決定するために前記デコーダに接続されたプレディケイション回路と、そして
前記デコーダに接続された実行ユニットであって、多重並列処理装置と結合バッファを有する実行ユニットと
を有するプロセッサにおいて、
前記プレディケイション回路が、データ要素用のプレディケイト値を決定し、
前記多重並列処理装置が、前記プレディケイト値に基いて前記現在選択されているデータ要素を前記現在選択されている前記結合バッファの記憶位置に書き込む工程と、前記現在選択されている記憶位置を示す前記値を増分する工程と、前記パックされたデータ・オペランドの他のデータ要素を前記現在選択されているデータ要素として選択し、かつ前記対応するマスク・データ要素の１つ又はそれ以上のビットから前記データ要素用のプレディケイト値を決定する工程とを実行することによって、前記パックされたデータ・オペランドから前記現在選択されているデータ要素を選択的に前記結合バッファに記憶し、
前記実行ユニットが、前記パックされたデータ・オペランドのデータ要素の最終要素が前記現在選択されているデータ要素になるまで前記多重並列処理装置による処理を繰返し、そして
前記記憶した結合バッファを前記対応する記憶位置に書き込む
ことを特徴とするプロセッサ。
【発明の詳細な説明】
【０００１】
（発明の背景）
（発明の分野）
本発明は、コンピュータ・システムの分野に関する。より詳細には、本発明は、プレディケーション(predication）を用いたマスクに基づくパックされたデータからのデータ要素の選択的書込みに関する。
【０００２】
（背景情報）
コンピュータ技術は、加速し続ける速さで発展を続けている。コンピュータが、主としてワード・プロセッシング・アプリケーションやスプレッドシート・アプリケーションのために使用される単なるビジネス・ツールであった時代はもう終わった。現在では、マルチメディア・アプリケーションの発展に伴い、コンピュータ・システムは、テレビジョンおよび家庭用ステレオ・システムにより近い一般的な家庭電化製品となった。実際、適切に構成されたコンピュータ・システム上で実行されるマルチメディア・アプリケーションがテレビジョン・セット、ラジオ、ビデオ再生装置等のように機能するので、コンピュータ・システムと他の家庭用電化製品との間の境界線はあいまいになってきている。したがって、コンピュータ・システムの市場における人気は、それらが含むメモリ量と、そのようなマルチメディア・アプリケーションを実行することができる速度によって決定することがしばしばある。
【０００３】
当業者ならば、期待されるようになったオーディオおよびビデオの生き生きしたレンダリングを実現するために、マルチメディア・アプリケーションと通信アプリケーションは、少数のビットで表される大量データを処理することを必要とすることを理解するだろう。例えば、３Ｄグラフィックをレンダリングするために、個別データ・アイテムの比較的大きな集合（例えば、８ビットのデータ）を同様に処理しなければならない。
【０００４】
このようなアプリケーションによって必要とされる１つの共通したオペレーションは、データ・アイテムの集合から選択されたデータ・アイテムをメモリに書き込むことである。所与のデータ・アイテムがメモリに書き込まれるべきかどうかはマスクによって決まる。データの移動する選択バイトに対する１つの手法は、一連のテスト、分岐、および書込みの命令を使用する。この手法によれば、対応するデータ・アイテムに対して１つまたは複数のマスク・ビットがテストされ、バイトをメモリに書き込むか、または書込みをバイパスするために分岐が使用される。しかし、この手法は、分岐の予測ミスのために性能を犠牲にするという難点がある。
【０００５】
この分岐の予測ミスによる不利益を回避するために、パックされたデータをある記憶位置から別の記憶位置に書き込むためのＳＩＭＤ「バイト・マスク・ライト(Byte Mask Write)」命令をサポートするために、単一命令多重データ処理（ＳＩＭＤ）プロセッサ・アーキテクチャが使用される（１９９８年３月３１日出願の米国特許出願第０９／０５２，８０２号参照のこと）。図１は、ＳＩＭＤアーキテクチャでＳＩＭＤバイト・マスク・ライト命令を実施するための専用並列回路を示すブロック図である。図１は、ＭＭ１と標識され、第１のオペランドＳＲＣ１  １００で示されている第１のＳＩＭＤレジスタからレジスタによって指定されるメモリ位置１０６に整数データを表す最大６４ビットを移動するＳＩＭＤバイト・マスクド・クォッドワード移動命令（ＭＡＳＫＭＯＶＱ）を示す。その際、ＭＭ２と標識され、第２のオペランドＳＲＣ２  １０２によって示される第２のＳＩＭＤレジスタに置かれるバイト・パックド・データ・マスク(byte packed data mask）を使用する。レジスタＭＭ１  １００のバイト１１０と１１４は、レジスタＭＭ２  １０２に記憶されているマスクのバイト１０８と１１２によって書き込み許可される。
【０００６】
図１に示すように、このＳＩＭＤバイト・マスク・ライト命令は、パックされたデータ・アイテムの各バイトを並列に処理するために、プロセッサ内に専用回路を必要とする。この専用回路の並列であるという性質によって、比較的良好なプロセッサ処理能力が達成されるにも関わらず、この専用回路は貴重なダイ・エリアを必要とし、グラフィカルおよび類似のタイプの処理にのみ使用されるだけである。
【０００７】
（発明の簡単な概要）
プレディケーションを用いたマスクに基づくパックされたデータからデータ要素を選択的に書き込むための方法および装置が開示される。本発明の一実施態様では、並列処理装置で、パックされたデータ・オペランドのデータ要素に対して下記の事項が実施される。すなわち、そのデータ要素が対応する記憶位置に書き込まれるように選択されているかどうかを示す、対応するパックされたデータ・マスク要素の１つまたは複数のビットから、そのデータ要素のプレディケイト値を決定すること、およびそのプレディケイト値に基づいてそのデータ要素を対応する記憶位置に記憶することである。
【０００８】
本発明の特徴および利点は、以下の本発明の詳細な説明から明らかになろう。
【０００９】
（発明の詳細な説明）
以下の説明では、説明のために、本発明の完全な理解を実現する目的で多くの詳細が記載されている。しかし、当業者には、本発明を実施するためにこれらの具体的な詳細が必ずしも必要ではないことが明らかになろう。他の事例では、本発明を不明瞭にしないように、よく知られた電子構造および電子回路をブロック図形式で示す。
【００１０】
図２は、本発明の一実施形態によるコンピュータ・システム２００の一実施形態を示すブロック図である。コンピュータ・システム２００は、プロセッサ２１０、記憶装置２２０、およびバス２１５を備える。プロセッサ２１０は、バス２１５によって記憶装置２２０に結合されている。さらに、いくつかのユーザ入力／出力装置２４０（例えば、キーボード、マウス）もバス２１５に結合されている。プロセッサ２１０は、ＣＩＳＣ、ＲＩＳＣ、ＶＬＩＷ、またはハイブリッド・アーキテクチャ等の任意のタイプのアーキテクチャの中央処理装置を表す。さらに、プロセッサ２１０は、１つまたは複数のチップ上で実施することもできる。バス２１５は、１つまたは複数のバス２１０（例えば、ＡＧＰ、ＰＣＩ、ＩＳＡ、Ｘ−Ｂｕｓ、ＶＥＳＡ等）およびブリッジを表す。この実施形態は単一プロセッサのコンピュータ・システムに関して説明するが、本発明は、多重プロセッサのコンピュータ・システムで実施することも可能である。
【００１１】
別の装置に加え、１つまたは複数のネットワーク・コントローラ２５５、ＴＶ放送単一受信機２６０、ファックス／モデム２４５、ビデオ・キャプチャ・カード２３５、およびオーディオ・カード２５０を任意選択でバス２１５に結合することができる。ネットワーク・コントローラ２５５は、１つまたは複数のネットワーク接続（例えば、イーサネット（登録商標）接続）を表す。ネットワークからのトラフィックをネットワーク・コントローラ２５５で受信する記憶装置２２０および媒体は、１つまたは複数の機械可読媒体を代表している。したがって、機械可読媒体は、機械（例えば、コンピュータ）が読み取れる形式で情報を記憶または伝送するための任意の機構を含む。例えば、機械可読媒体は、読取り専用メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュ・メモリ・デバイス、電子・光学・音響または他の形式の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号等）を含む。
【００１２】
ＴＶ放送信号受信機２６０は、ＴＶ放送信号を受信するための装置を表し、一方、ファックス／モデム２４５は、データを表すアナログ信号を受信および／または送信するためのファックスおよび／またはモデムを代表している。イメージ・キャプチャ・カード２３５は、イメージをデジタル化するための１つまたは複数の装置（すなわち、スキャナ、カメラ等）を代表している。オーディオ・カード２５９０は、音声を入力および／または出力するための１つまたは複数の装置（例えば、マイクロフォン、スピーカ、磁気記憶装置、光学記憶装置等）を代表している。グラフィック・コントローラ・カード２３０もバス２１５に結合されている。グラフィック・コントローラ２３０は、イメージを生成するための１つまたは複数の装置（例えば、グラフィック・カード）を代表している。
【００１３】
図２は、記憶装置２２０がデータ２２４およびプログラム・コード２２２を記憶しているということも示す。データ２２４は、１つまたは複数の形式で記憶されているデータ（例えば、パックされたデータ・フォーマット）を代表している。プログラム・コード２２２は、本発明の任意および／またはすべての技術を実施するために必須のコードを表す。具体的には、プログラム・コード２２２は、プレディケーションと並列データ処理を使用したマスク（例えば、ＳＩＭＤバイト・マスク書込み命令のエミュレーション）に基づくパックされたデータからのデータ要素の効率的な選択的書込みをプロセッサ２１０に実施させる１つまたは複数の命令を含んでいる。当然ながら、記憶装置２２０は、本発明を理解するために必須ではない付加的なソフトウェア（図示せず）を好適に含んでいる。
【００１４】
図２は、プロセッサ２１０がデコーダ２１６、一組のレジスタ２１４、実行ユニット２１２、内部バス２１１、およびプレディケーション回路２１３を含むことをも示す。当然ながら、プロセッサ２１０は、本発明を理解するために必須ではない付加的な回路も含んでいる。デコーダ２１６、レジスタ２１４、実行ユニット２１２、およびプレディケーション(predication）回路２１３は、内部バス２１１によって相互に結合されている。デコーダ２１６は、プロセッサ２１０によって受信された命令を制御信号および／またはマイクロコード・エントリポイントに復号するために使用される。これらの制御信号および／またはマイクロコード・エントリポイントに応答して、実行ユニット２１２は適切なオペレーションを実施する。デコーダ２１６は、任意の数の様々な機構を使用して実施することができる（例えば、参照用テーブル、ハードウェア実施、ＰＬＡ等）。
【００１５】
デコーダ２１６は、プロセッサ２１０にマスクに基づくパックされたデータからのデータ要素の選択的書込みをさせるための１つまたは複数の命令をサポートするための復号回路２１８を含んでいるように示してある。さらに、一実施形態では、プロセッサ２１０は、クロック・サイクルごとにそれらの１つまたは複数の命令を完結させることができるスーパスカラ・パイプライン・プロセッサである（すべてのデータ依存性およびパイプライン・フリーズを無視して）。これらの命令の他に、プロセッサ２１０は、複数の新しい命令および／または既存の汎用プロセッサにある命令と類似の複数の命令を実行可能にすることもできる。例えば、一実施形態では、プロセッサ２１０は、カリフォルニア州サンタクララのＩｎｔｅｌ社製、Ｐｅｎｔｉｕｍ（登録商標）ＩＩＩプロセッサ等の既存プロセッサによって使用されるＩｎｔｅｌアーキテクチャ命令と互換性のある命令セットをサポートする。
【００１６】
実行ユニット２１２は、複数の命令を並列に処理することができる複数の並列処理装置２１９Ａ〜２１９Ｎ（例えば、並列処理装置）を含んでいる。本発明の一実施形態では、実行ユニット２１２は、６４ビットの書込みを実行することができるまでデータを記憶しておくための結合バッファ２７０も含んでいる。この結合バッファ２７０は、バッファが記憶されるべきデータを蓄積している間、バス２１５を別の目的で使用することを可能にすることによって、バス２１５を最大限に活用することを可能にする。しかし、６４ビットと異なる幅を有する結合バッファ２７０またはバス２１５は本発明の範囲内にあるということ、これらは、処理装置の特定の細部において相当する相違点を生じさせることがあるということを理解されたい。
【００１７】
レジスタ２１４は、制御／状態情報、数字データ、浮動小数点データ、パックされたデータ（数字および／または浮動小数点）、およびプレディケイト(predicate：述語）・データを含む情報を記憶するためのプロセッサ２１０上の記憶領域を表す。本発明の態様は、パックされたデータに関して動作するために記述された１つまたは複数の命令であり、また、１つまたは複数のこれらの命令を使用する方法であることが理解されよう。本発明のこれらの態様により、プレディケイト・データを記憶するために使用される記憶領域は重要ではない。本明細書では、図２を参照して説明した１つまたは複数のコンピュータ・システムを含めてデータを処理するための任意の機械を示すためにデータ処理システムという用語を使用する。
【００１８】
本発明の一実施形態では、プレディケーション回路２１３は、プロセッサ２１６によってサポートされる命令セットのうちの任意の命令のために使用することができる一般的なプレディケーション回路である。プレディケーションは、すべての命令の条件付き実行を可能にする。したがってこの技術は、分岐自体の除去を可能にし、それによって予測ミスによる不利益を解消する。１９９８年１月２６発行のＭｉｃｒｏｐｒｏｃｅｓｓｏｒ  ＲｅｐｏｒｔのＰｅｔｅｒ  Ｓｏｎｇ著、「Ｄｅｍｓｙｔｉｆｙｉｎｇ  ｔｈｅ  ＥＰＩＣ  ａｎｄ  ＩＡ−６４」と、１９９１年１２月１８日発行のＭｉｃｒｏｐｒｏｃｅｓｓｏｒ  ＲｅｐｏｒｔのＢｒｉａｎ  Ｃａｓｅ著、「ＡＲＭ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｏｆｆｅｒｓ  Ｈｉｇｈ  Ｃｏｄｅ  Ｄｅｎｓｉｔｙ」を参照されたい。一般的なプレディケーション・モデルが使用される場合の一実施形態が説明されているが、代替の実施形態は特定の命令（例えば、条件付き移動のタイプの命令）だけに関するプレディケーションをサポートするようにすることもできる。さらに、一実施形態は、マスクが、データ要素が書き込まれるマスクをデータ要素と同じサイズにすることを可能にするために使用されるように説明されているが、一方、代替の実施形態では、マスクは異なるサイズであってよい（各マスクが単一ビットから構成されることを含めて）。
【００１９】
図３は、本発明の一実施形態による流れ図である。ブロック３０５では、選択的に書き込まれるべきパックされたデータ・オペランドの現在選択されているデータ要素に対する書き込み可能な記憶位置を識別する初期値が決定される。ブロック３０５から、プロセスはブロック３１０に進む。
【００２０】
ブロック３１０では、現在選択されているデータ要素に対するプレディケイト値が決定される。本発明の一実施形態では、プレディケイト値は、テスト・ビット（「ｔｂｉｔ」）命令を使用することによって決定される。この実施形態によれば、ｔｂｉｔ命令は、選択的に書き込まれるべきパックされたデータ・オペランドの現在選択されているデータ要素に対応するパックされたマスク・データ要素のビットをテストするために使用される。このプレディケイト値は、様々な記憶媒体（例えば、専用プレディケイト・レジスタ、汎用レジスタ等）に記憶することができる。
【００２１】
図３のブロック３２０では、ブロック３１０で決定されたプレディケイト値に関して判断が行われる。ブロック３２０では、プレディケイト値が真であればプロセスの流れはブロック３３０に進む。そうでない場合、プロセスの流れはブロック３５０に進む。
【００２２】
ブロック３３０では、パックされたデータ・オペランドの現在選択されているデータ要素が記憶される（図２に関しては、現在選択されているデータ要素は結合バッファに記憶することができる）。ブロック３３０の後、プロセスはブロック３５０に進む。
【００２３】
図３のブロック３５０では、現在選択されているデータ要素が、処理されるべきパックされたデータ・オペランドの最後のデータ要素であるかどうかについてもう１つの判断がなされる。現在選択されているデータ要素が処理されるべき最後のデータ要素である場合、プロセスの流れはこの手順を終了するように進む。そうでない場合、プロセスの流れはブロック３５０からブロック３６０に進む。
【００２４】
図３のブロック３６０では、記憶位置に関連付けられた値が増分される。本発明の一実施形態では、この値は汎用レジスタ内に置かれる。しかし、記憶位置に関連付けられた値は、様々な記憶媒体内に置くこともできる。次に、図３のブロック３７０では、パックされたデータ・オペランドは１つのデータ要素の幅だけシフトされる（例えば、パックされたデータ・オぺランドの最上位データ要素を現在選択されているデータ・アイテムであると仮定すると、パックされたデータ・オペランドは左シフトされ、その結果、次に下位のデータ要素が最上位データ要素、すなわち現在選択されているデータ要素になる）。次いでこのプロセスの流れは、３７０からブロック３１０に戻り、最後のデータ要素が処理されるまでこのプロセスは繰り返される。
【００２５】
パックされたデータ・オペランドの現在選択されているデータ要素を選択するためにシフティングが用いられる一実施形態を説明したが、代替の実施形態は別の技術（例えば、ポインタ、指示を可能にするサポート命令（下記のｔｂｉｔ命令を参照のこと）等）を使用することができる。さらに、図３は順次処理を例示するものと解釈することができるが、オペレーションを異なる順序で実行することができ（例えば、コンパイル・スケジューリング、ループ展開、ハードウェアのｏｕｔ−ｏｆ−ｏｒｄｅｒ実行、等）、様々なオペレーションを並列で実行することができ、かつ／または様々な他のオペレーションを流れの所々に挿入することができることも理解されたい。
【００２６】
本発明の一実施形態は、概念的に以下のようにとらえることができる。
Ｒ２＝アドレス・レジスタ
Ｒ３＝６４ビットのデータ・レジスタ
Ｒ４＝対応するマスク要素を有するＭａｓｋ  Ｒｅｇｉｓｔｅｒ（ｘ０、ｘ１、．．．、ｘ７）
Ｒ３に記憶されているパックされたデータ・オペランドから選択的にバイト・サイズ・データ要素を書き込むためのコード・シーケンス
【表１】
0004921665.tif 000002
【００２７】
レジスタＲ２は、記憶位置に関連付けられた値を含んでいる。レジスタＲ３は、この例では、８つのデータ要素に分割される６４ビットのパックされたデータを含んでいる。レジスタＲ４は、パックされたマスク・オペランドを、Ｒ３の８つのデータ要素に対応するｘ０〜ｘ７の８つのマスク要素と共に含んでいる。
【００２８】
命令の第１のグループで、コード・シーケンスはｔｂｉｔ命令を使用してプレディケイト値を決定する。この実施形態では、ｔｂｉｔはパックされたマスク要素の最上位ビットｘ０をテストする。このビットが１の場合、プレディケイトｐ１は真にセットされ、そうでない場合、ｐ１は偽にセットされる。代替の実施形態は、ビット値が０の場合にプレディケイトｐ１を真に等しくセットし、反対に、ビット値が１の場合にプレディケイトｐ１を偽にセットする場合がある。ｔｂｉｔ命令は、対応するパックされたマスク要素の任意のビットをテストすることができることを理解されたい。
【００２９】
命令の第２のグループでは、Ｒ４の値に関連付けられる記憶位置にこの例では１バイトを条件付きで記憶するために、以前記憶されたプレディケーション値が使用される。同様に、命令の第２のグループを通じてＲ２は増分され、Ｒ３は右に８ビットだけシフトされ、プレディケイトｐ１は、パックされたマスク要素ｘ１がｘ０の代わりに使用されることを除いて、命令の第１のグループと同様の方法でリセットされる。多重並列処理装置は、命令の第２のグループのすべての４つの命令を１つまたは複数の同じクロック・サイクルで並列処理することを可能にする。命令の第３から第７のグループは、命令の各グループが様々なパックされたマスク要素を使用することを除いて、命令の第２のグループと同様の方法で続行する。命令の第９のグループは、Ｒ４内の値に関連付けられた記憶位置に最後のバイトを条件付きで記憶するためにプレディケーションを使用する。この例では、シーケンスは９クロック・サイクルを要する。しかし、クロック・サイクルの量は、プロセッサの実施態様および／またはパックされたデータ・オペランドのデータ要素の数によって異なる場合がある。
【００３０】
したがって、本発明は、専用のＳＩＭＤバイト・マスク・ライト回路の使用を必要としない。むしろ、プレディケーションの使用は、条件付き分岐の回避、したがって分岐の予測ミスによる性能損失の回避を可能にする。多重並列処理装置は、改善されたプロセッサ処理能力を可能にする（例えば、本発明の一実施形態は、上記各グループの命令を並列に処理するために必要な数の並列処理装置を有する）。この並列という特性とプレディケーションによって、本発明は、バイト・マスク・ライトの専用ＳＩＭＤ回路の実装に匹敵する性能を有することができる。さらに、表１にある命令、したがってそれらをサポートするためのプロセッサの回路は、使用の分野が遥かに狭い特化／専用バイト・マスク書込み命令回路（例えば、グラフィックス処理）と比較して、より多目的に使用される。
【００３１】
本発明は、処理システムにおいて様々なレベルに実装することができる。例えばプロセッサ・アーキテクチャによって、上記のコード・シーケンスは手動で符号化されプロセッサに供給される、単一命令をコンパイルするコンパイラによって生成される、単一命令の受信に応答してプロセッサ内のデコーダによって生成される等々が可能である。
【００３２】
図４は、本発明の一実施形態によるコンピュータ・システムの選択された一部を示す図である。コンピュータ・システムのこの選択された一部は、プロセッサ４１０、記憶装置４２０、およびバス４１５を含んでいる。図４のプロセッサ４１０は、本発明を理解するためには必須でない付加的な回路を含んでいる。
【００３３】
プロセッサ４１０は、２つの異なる命令セット（例えば、６４ビットの命令セットと３２ビットの命令セット）を実行するように設計されている。本明細書では、プロセッサによって外部から受信される命令を示すために、マクロ命令という用語を使用する。１つの具体的な実施形態では、第１の命令セット４１０の命令を制御信号および／またはマイクロコード・エントリポイントに復号するためにデコーダ４１６が使用される。この場合、第１の命令セット４１０の命令は、プロセッサ４１０によって外部から受信された場合はマクロ命令である。さらに、第２の命令セット４２０の命令（例えば、ＩＡ３２Ｉｎｔｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ命令）を、変換後にデコーダ４１６によって処理される第１の命令セット４１０に変換するためにマイクロコード・コンバータ４１７が使用される。すなわち、第２の命令セット４２０の少なくとも特定のマクロ命令は、第１の命令セット４１０からの命令で構成される第１のレベルのマイクロコードに変換される。この場合、第１の命令セット４１０からの命令は、プロセッサ４１０に対して内部的に生成される場合はマイクロ命令である。一実施形態では、この変換はマイクロコードＲＯＭを使用して達成される。例えば、一実施形態では、単一ＳＩＭＤバイト・マスク・ライトマイクロ命令をマイクロコード・コンバータ４１７に供給するとができ、そこでプレディケーションを用いたマスクに応じたパックされたデータからのデータ要素を選択的に書き込むために、第１の命令セット４１０からの適切な命令（ここではマイクロ命令として動作する）に変換される。さらに、データ要素を選択的に書き込むための第１の命令セット４１０からの同じ命令を、デコーダ４１６によって直接的にマクロ命令として受信することもできる。
【００３４】
以上、本発明を具体的な例示的実施形態を参照しながら説明した。しかし、この開示の特典を受ける人物には、本発明のより広範な趣旨および範囲から逸脱せずに、これらの実施形態に対して様々な修正形態および変更を行うことができることが明らかになろう。したがって、本明細書および図面は、限定的なものではなく説明的なものとみなされるべきである。
【図面の簡単な説明】
【図１】  ＳＩＭＤアーキテクチャでＳＩＭＤバイト・マスク・ライト命令を実施するための専用並列回路を示すブロック図である。
【図２】  本発明の一実施形態によるコンピュータ・システムを示すブロック図である。
【図３】  本発明の一実施形態による流れ図である。
【図４】  本発明の一実施形態によるコンピュータ・システムの選択された部分を示す図である。
【図１】
0004921665.tif 000003
【図２】
0004921665.tif 000004
【図３】
0004921665.tif 000005
【図４】
0004921665.tif 000006