(57)【要約】  ある実施例によれば、評価ユニットが、単一命令複数データ（ＳＩＭＤ）実行エンジンのフラグレジスタのために提供され得る。例えば、水平評価ユニットは、前記ＳＩＭＤ実行エンジンによって複数のベクトルに渡って処理される評価オペレーションを実行し得る。ある実施例によれば、垂直評価ユニットは、複数のフラグレジスタに渡って評価オペレーションを実行し得る。【選択図】図１
2008524723.tif 000002
【特許請求の範囲】
【請求項１】
ｎおよびｍが１以上の整数である場合において、複数のｍチャネル独立ベクトルを示す情報を、ｎチャネル単一命令、複数データ（ＳＩＭＤ）の実行エンジンの、ｎロケーションフラグレジスタに格納することと、
異なる独立ベクトルを表す情報に基づく値を有する、少なくとも１つのロケーションを有する出力を、前記フラグレジスタの中の前記情報に基づいて生成することと
を備える方法。
【請求項２】
前記フラグレジスタは、ｐビットを有し、
それぞれのビットは、前記ＳＩＭＤ実行エンジンの少なくとも１つのチャネルを表し、
ｐはｎより小さい、
請求項１に記載の方法。
【請求項３】
前記出力はｐビットを有し、
それぞれのビットは前記ＳＩＭＤ実行エンジンの少なくとも１つのチャネルを表し、
ｐはｎより小さい、
請求項１に記載の方法。
【請求項４】
それぞれのベクトルは、（１）前記ＳＩＭＤ実行エンジンの少なくとも２つのチャネルに対応付けられており、（２）グラフィックスのロケーションに対応付けられた２つのロケーションの値を有する、請求項１に記載の方法。
【請求項５】
（１）前記フラグレジスタはｎビットを有し、それぞれのビットは前記ＳＩＭＤ実行エンジンのチャネルを表し、（２）前記出力はｎビットを有し、それぞれのビットは前記ＳＩＭＤ実行エンジンのチャネルを表す、請求項１に記載の方法。
【請求項６】
前記出力の第１ビットは、前記ＳＩＭＤ実行エンジンの第１チャネルを表し、前記出力の前記第１ビットの値は、前記フラグレジスタの中で前記第１チャネルを表していないビットに、少なくとも部分的に基づく、請求項５に記載の方法。
【請求項７】
前記の、前記出力を生成することは、
ＳＩＭＤ実行エンジンのチャネルの集合の少なくとも１つに対応付けられた指示を受信することと、
ＳＩＭＤ実行エンジンのチャネルの集合を表す、前記のフラグレジスタの中の、ビットの集合を評価することと、
ＳＩＭＥ実行エンジンのチャネルの前記集合を表す前記出力のビットの集合に、前記評価の結果を格納することと
を備える、請求項１に記載の方法。
【請求項８】
前記評価は、
（１）前記フラグレジスタの中のビットの全ての集合が、第１の値を有するか、（２）前記フラグレジスタの中のビットの如何なる集合も第１の値を有するか、の何れか１つを決定することを備える、請求項７に記載の方法。
【請求項９】
指示は、ＳＩＭＤ実行エンジンのチャネルの、異なるサイズの集合に対応付けら得る、請求項７に記載の方法。
【請求項１０】
前記受信した指示は、複数の集合に対応付けられており、前記評価および格納は、それぞれの集合について実行される、請求項７に記載の方法。
【請求項１１】
前記格納することは、第１情報を第１のフラグレジスタに格納することを備えており、さらには、
ＳＩＭＤ実行エンジンの第２フラグレジスタに第２情報を格納することと、
第１および第２フラグレジスタの中の情報に基づいて、第２の出力を生成することと
を備え、前記第１の出力は、前記第１フラグレジスタおよび前記第２フラグレジスタの双方からの情報に基づく値を有する少なくとも１つのロケーションを含む、請求項１に記載の方法。
【請求項１２】
ｎおよびｐが１より大きい整数の場合において、ｎチャネル単一命令、複数データ（ＳＩＭＤ）実行エンジンの、第１ｐロケーションフラグレジスタに、情報を格納することと、
前記実行エンジンの第２フラグレジスタに情報を格納することと、
前記第１フラグレジスタおよび前記第２フラグレジスタの双方からの情報に基づく値を有する、少なくとも１つのロケーションを含む、出力を生成することと
を備える方法。
【請求項１３】
（１）第１フラグレジスタはｎビットを有し、それぞれのビットはＳＩＭＤ実行エンジンのチャネルを表し、（２）前記第２フラグレジスタはｎビットを有し、それぞれのビットは前記ＳＩＭＤ実行エンジンのチャネルを表し、（３）前記出力はｎビットを有し、それぞれのビットは前記ＳＩＭＤ実行エンジンのチャネルを表す、請求項１２に記載の方法。
【請求項１４】
前記出力の第１ビットは、前記ＳＩＭＤ実行エンジンの第１チャネルを表し、前記出力の中の第１ビットの値は、フラグレジスタの中の、前記第１チャネルを表していないビットに、少なくとも部分的に基づく、請求項１３に記載の方法。
【請求項１５】
前記の前記出力を生成することは、
フラグレジスタの集合に対応付けられた指示を受信することと、
それぞれのＳＩＭＤ実行エンジンのチャネルについて、
前記集合の中の前記フラグレジスタからの当該チャネルを表すビットを評価することと、
当該チャネルを表す前記出力ビットの中に、前記評価の結果を格納することと
を備える、請求項１３に記載の方法。
【請求項１６】
前記評価は、
それぞれのＳＩＭＤ実行エンジンのチャネルについて、（１）前記の集合の中の前記フラグレジスタからの当該チャネルを表すビットの全てが第１の値を有するか、（２）前記の集合の中の前記フラグレジスタからの当該チャネルを表すビットの何れかが第１の値を有するか、の何れかを決定することを備える、請求項１５に記載の方法。
【請求項１７】
指示は、フラグレジスタについての、サイズの異なる集合に対応付けられ得る、請求項１５に記載の方法。
【請求項１８】
前記第１の情報は、ｍを１より大きい整数として、複数のｍチャネル独立ベクトルを表し、前記の生成することは、第１の出力を生成することに加えて、さらに、
有している値が、異なる独立ベクトルを表す情報に基づいている、少なくとも１つのロケーションを含む第２の出力を、前記第１の情報に基づいて生成すること、
を備える請求項１３に記載の方法。
【請求項１９】
それぞれのベクトルは、（１）前記ＳＩＭＤ実行エンジンの少なくとも２つのチャネルに対応付けられており、（２）１つのロケーションに対応付けられた２つの値を有する、
請求項１８に記載の方法。
【請求項２０】
ｎを１より大きい整数として、ｎチャネル単一命令複数データ（ＳＩＭＤ）実行エンジンのフラグレジスタに、情報を格納することと、
ＳＩＭＤ実行エンジンのチャネルの集合に対応付けられた指示を受信することと、
ＳＩＭＤ実行エンジンの集合に対応付けられたフラグレジスタ内の情報に基づいて、出力を生成することと
を備える方法。
【請求項２１】
ｎチャネルの単一命令複数データ（ＳＩＭＤ）実行エンジンにおけるｎビットフラグレジスタであって、ｎは１より大きい整数であり、かつ、フラグレジスタの各ビットがチャネルに対応付けられており、実行ユニットからの、１以上の複数チャネルグラフィックスベクトルに対応付けられた情報を格納するためのフラグレジスタと、
ｎビット出力を生成するための水平評価ユニットであって、前記出力の各ビットが前記ＳＩＭＤ実行エンジンのチャネルに対応付けられており、前記出力の少なくとも１つのビットの値が、異なるグラフィックスベクトルを表す前記フラグレジスタ内のビットに基づく、水平評価ユニットと
を備える装置。
【請求項２２】
前記水平評価ユニットは、さらに（１）ＳＩＭＤ実行エンジンのチャネルについての、少なくとも１つの集合に対応付けられた指示を受信し、（２）ＳＩＭＤ実行エンジンのチャネルについての前記集合を表す前記フラグレジスタ内のビットの集合を評価し、（３）前記実行ユニットに対し前記評価の結果を出力するために設けられている、請求項２１に記載の装置。
【請求項２３】
指示は、ＳＩＭＤ実行エンジンのチャネルについての、サイズの異なる集合に対応付けられ得る、請求項２２に記載の装置。
【請求項２４】
ｎを１より大きい整数とした場合における、ｎチャネル単一命令複数データ（ＳＩＭＤ）実行エンジンの第１のｎビットフラグレジスタと、
前記ＳＩＭＤ実行エンジンの第２のｎビットフラグレジスタと、
前記第１のフラグレジスタおよび前記第２のフラグレジスタからの情報に基づく値を有する、少なくとも１つのビットを有する、ｎビットの出力を生成する水平評価ユニットと
を備える装置。
【請求項２５】
前記水平評価ユニットは、さらに、（１）それぞれのＳＩＭＤ実行エンジンのチャネルのために、フラグレジスタの集合に対応付けられた指示を受信し、（２）前記集合内の前記フラグレジスタからのそのチャネルを表す、前記のビットを評価し、（３）そのチャネルを表す前記出力のビットに、前記評価の結果を格納するために設けられている、請求項２４に記載の装置。
【請求項２６】
前記指示を供給し、かつ、前記出力を受信するための実行ユニットを更に備える、請求項２５に記載の装置。
【請求項２７】
第１のｎビットフラグレジスタと、
第２のｎビットフラグレジスタと、
前記第１のフラグレジスタおよび前記第２のフラグレジスタの双方からの情報に基づく値を有する、少なくとも１のビットを有する、ｎビットの出力を生成するための、垂直評価ユニットと
を有する、ｎを１より大きい整数とした、ｎチャネルの単一命令複数データ（ＳＩＭＤ）実行エンジン、
を有するプロセッサと、
グラフィックスメモリユニットと
を備えるシステム。
【請求項２８】
前記第１のフラグレジスタは、実行ユニットからの情報を格納するために設けられ、前記情報は、１以上の複数チャネルグラフィックスベクトルに対応付けられている、
請求項２７に記載のシステム。
【請求項２９】
水平評価ユニットを更に備える、請求項２７に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
プロセッシング・システムの性能を改善するために、単一の命令の期間内に、複数のデータのオペランドについて１つの命令が同時に実行され得る。そのような命令は、単一命令、複数データ（ＳＩＭＤ）として参照される。例えば、８チャネルＳＩＭＤ実行エンジンは、８つの、３２ビットのデータのオペランドについて、１つの命令を同時に実行する。そしてそれぞれのオペランドは、そのＳＩＭＤ実行エンジンのユニークな演算チャネルにマップされる。さらに、それぞれが、その実行エンジンのそれぞれのチャネルに対応付けられたロケーションを有する、１又は複数のフラグレジスタが用いられてもよい（例えば、３つの８ビットのフラグレジスタが、８チャネルＳＩＭＤ実行エンジンのために提供されてもよい）。フラグレジスタの情報に対し、様々な方法を用いて、効率的かつ柔軟にアクセスする能力が、その実行エンジンの性能を改善することができる。
【発明の詳細な説明】
【０００２】
ここで述べる幾つかの実施形態は、「プロセッシング・システム」に対応付けられている。ここで用いる、フレーズ「プロセッシング・システム」は、データを処理する如何なるデバイスとしても参照され得る。プロセッシング・システムは、例えば、グラフィックスのデータおよび／または他の種類のメディアの情報を処理するグラフィックス・エンジンに関連付けられてもよい。ある場合において、プロセッシング・システムの性能は、ＳＩＭＤ実行エンジンの使用に伴って改善され得る。例えば、ＳＩＭＤ実行エンジンは、複数のチャネルのデータのために、浮動小数点の単一のＳＩＭＤ命令を同時に実行してもよい（例えば、３次元の幾何学的形状の変換および／またはレンダリングを高速化するため）。他の例において、プロセッシング・システムは、中央処理ユニット（ＣＰＵ）およびデジタル・シグナル・プロセッサ（ＤＳＰ）を含む。
【０００３】
図１は、ＳＩＭＤ実行エンジン１１０を有する、ある種類のプロセッシング・システム１００を示す。この場合において、この実行エンジン１１０は、４つのオペランドのデータと共に命令を受信する。ここで、それぞれのオペランドは、異なるベクトル（例えば、ベクトルＶ０からＶ３までの、４つのＸ成分）に対応付けられている。それぞれのベクトルは、例えば、３次元のグラフィックスの位置に対応付けられた、３つの位置の値（例えば、Ｘ、ＹおよびＺ）を含んでよい。このエンジン１１０は、単一の命令期間内に、これら全てのオペランドについてこの命令を同時に実行してよい。このようなアプローチは、「垂直の」、「チャネル・シリアルな」、または、「ストラクチャ・オブ・アレイ（ＳＯＡ）の」実装と呼ばれる。
【０００４】
図２は、ＳＩＭＤ実行エンジン２１０を有する、他の種類のプロセッシング・システム２００を示す。この場合において、この実行エンジン２１０は、４つの成分のデータのベクトル（例えば、ベクトル成分Ｘ、Ｙ、ＺおよびＷであって、それぞれが複数のビットを有し、それぞれのビットは、このＳＩＭＤ実行エンジン２１０の、対応するチャネル０から３についての演算のために設けられている）と共に、１つの命令を受信する（例えば、命令メモリユニットから）。このエンジン２１０は、そして、そのベクトルの全ての成分のためにその命令を同時に実行し得る。このようなアプローチは、「水平の」、「チャネル・パラレルな」、または、「アレイ・オブ・ストラクチャ（ＡＯＳ）の」実装と呼ばれる。ここで述べる幾つかの実施例は４チャネルのＳＩＭＤ実行エンジン１１０に対応付けられているが、ＳＩＭＤ実行エンジンは１より多いの如何なる数のチャネルをも有することができることに注意されたい（例えば、実施例は、３２チャネルの実行エンジンに対応付けられてもよい）。
【０００５】
ある実施例に従うと、ＳＩＭＤエンジンは、複数のベクトルに対応付けられた情報を同時に処理し得る。例えば、図３は、同時に２つのベクトルを処理し得る８チャネルＳＩＭＤ実行エンジン３１０を含む、プロセッシング・システム４００を示す。即ち、チャネル４から７までがベクトル１を処理している間に、チャネル０から３までがベクトル０を処理し得る。
【０００６】
この実行エンジン３１０は、それぞれのチャネルに対応付けられたロケーションを有するフラグレジスタ３２０を更に有する。例えば、このフラグレジスタ３２０は、８ビットのレジスタであってよく、そして、それぞれのビットは、論理的演算チャネルのうちの１つに対応付けられたフラグ（Ｆ）であってよい。あるフラグは、例えば、そのチャネルのために演算論理装置（ＡＬＵ）の動作によって生成される、１または２以上の結果に対応付けられてもよい。その結果は、例えば、例えば、ゼロ、非ゼロ、等しい、等しくない、より大きい、より大きいか等しい、より小さい、より小さいか等しい、および／または、オーバーフローの状態に対応付けられてよい。例えば、ＳＩＭＤ実行エンジンのための次の命令を考える。
ａｄｄ．ｆ．ｚ（８）  ｒ０    ｒ１    −ｒ２
【０００７】
この場合、レジスタｒ２の値は、レジスタｒ１の値から差し引かれ、その結果はレジスタｒ０に格納され、フラグレジスタ３２０（「．ｆ」）のビットは、その結果がゼロ（「．ｚ」）と等しければセットされる。これは、８チャネルの全てについて同時に行われ、フラグレジスタ３２０内の８ビット全てが、同様に更新される。
【０００８】
あるアプリケーションでは、フラグレジスタ３２０内の情報に様々な方法でアクセスできることが有用になり得る。グラフィックスのアプリケーションにおいて、例えば、フラグレジスタ３２０内の如何なるフラグもゼロであるかどうか決定することが、あるときは有用かもしれないし、また他の時は、（１）第１のベクトルに対応付けられたチャネル０からチャネル３に対応付けられた如何なるフラグもゼロであるかどうか、および、（２）第２のベクトルに対応付けられたチャネル４からチャネル７に対応付けられた如何なるフラグもゼロであるかどうか、の双方を知ることが有用かもしれない。
【０００９】
図４は、ある実施例において、フラグレジスタ４２０を含むシステム４００を示す。前と同様に、システム４００は、複数のベクトルに対応付けられた情報を同時に処理することができる。８ビットのフラグレジスタ４２０が図４では示されているが、他の数のビットも提供可能され得ることに注意されたい。例えば、このフラグレジスタ４２０は、ｎを１より大きい整数として、ｎチャネルＳＩＭＤ実行エンジンのｎビットフラグレジスタであってよい。ある実施例に従うと、フラグレジスタ４２０の各ビットは、あるチャネルに対応付けられてよく、そして、フラグレジスタ４２０は、ＳＩＭＤ実行ユニットから情報を受信して格納してよい。ある実施例に従うと、この情報は、１以上の複数チャネルベクトルに対応付けられる（例えば、２つのグラフィックス・ベクトルが同時に処理されてもよい。）。
【００１０】
ある実施例に従うと、ひとつのｎチャネル実行エンジンは、ｐをｎより小さいものとして、ｐビットのフラグレジスタを有してよい。例えば、４ビット・フラグレジスタが、１６チャネルＳＩＭＤ実行エンジンのために提供されてよく、そして、そのフラグレジスタのそれぞれのビットは、４つのチャネルに対応付けられてもよい。
【００１１】
さらに、水平「評価」ユニット４３０が、ｎビットの出力を生成するために提供される。その出力の各ビットは、そのＳＩＭＤ実行エンジンのチャネルに対応付けられる。ここで用いる「評価」という用語は、スウィズル、アセンブル、および／または論理操作と結びついた、情報へのアクセスを参照する。例えば、スウィズル操作は、情報の再配置あるいはグルーピングに関連付けられてよい。他の例では、情報は複製されてもよいし、再配置されてもよいし、および／またはグループ化されてもよい。さらに、情報が組み立てられて、別々の記憶素子にある部分が、単一の論理記憶素子に集められてもよい。その情報について実行され得る論理操作は、論理的なビットワイズの操作、例えば、ＡＮＤ、ＯＲおよび他の論理操作であってよいことに注意されたい。
【００１２】
例えば、図４に説明される水平評価ユニット４３０は、フラグレジスタ４２０から８ビットを受信して、８ビットの出力を生成してもよい。水平評価ユニット４３０のその操作は、例えば、オペランドフェッチユニットにより制御されてもよい。この水平評価ユニット４３０は、ある実施例では、フラグレジスタ４２０内の各フラグを、出力に含まれる対応するフラグに単にマップしてもよい（例えば、図４のこの出力は、この場合、「０１００  １１１１」の通過であろう）。
【００１３】
ある実施例に従うと、水平評価ユニット４３０は、これに代えて、フラグレジスタ４２０内の全てのビットについての評価を実行するように制御されてもよい。例えば、「ａｎｙ８」状態は、この水平評価ユニット４３０に、そのフラグレジスタ内のその８ビットの何れもがセットされているかどうかを決定させることができる。もしそうならば、その出力の８ビット全ては、１にセットされる。もしそうでなければ、その出力の８ビットすべては０にセットされる（図４の出力は「１１１１  １１１１」となるであろう）。このように、その出力の少なくとも１つのビットの値は、異なる実行チャネルおよび／またはベクトルを表す、フラグレジスタ４２０内のビットに基づいてよい。
【００１４】
ある実施例に従うと、ｎチャネル実行エンジンの水平評価ユニットは、ｐをｎより小さい数として、ｐビットの出力を有してもよい。例えば、４ビットの出力が、１つの８チャネルＳＩＭＤ実行エンジンに対し提供されてもよく、その出力のそれぞれのビットは２つのチャネルに対応付けられてもよい。
【００１５】
ある実施例に従うと、水平評価ユニット４３０は、このフラグレジスタ４２０内のビットの部分集合について評価を実行するように制御されてもよい。例えば、その水平評価ユニット４３０は、ＣＨ０、ＣＨ２、ＣＨ４およびＣＨ６に対応付けられたこのフラグレジスタ４２０内のビットについて評価を実行するように制御されてもよい。
【００１６】
図５は、ある実施例に従う方法のフローチャートを示す。この方法は、例えば、図４のシステム４００に結びついて実行されてよい。ここで述べるこのフローチャートは、動作について固定された順序を必ずしも意図せず、そして、実施例は実用的な如何なる順序でも実行され得る。ここで述べられる如何なる方法も、ハードウェア、ソフトウェア（μコードを含む）、ファームウェア、あるいは、これらのアプローチの如何なる組合せによっても実行され得ることに、注意されたい。例えば、ストレージ・メディアは命令を格納してもよく、そのうえ、その命令は、マシンにより実行されると、ここで述べられる如何なる実施例に従う動作をもたらすことができる。
【００１７】
５０２において、情報はｎチャネルＳＩＭＤ実行エンジンのｎロケーションフラグレジスタに格納される。その情報は、例えば、ｎおよびｍを１より大きい整数として、複数のｍチャネル独立ベクトルを表してよい。
【００１８】
５０４において、出力はそのフラグレジスタ内の情報に基づいて生成されてよい。その出力は、例えば、異なる独立ベクトルを表す情報に基づく値を有する、少なくとも１つのロケーションを含んでよい。例えば、８ビット出力のうちの第１ビットは、同時に処理される２つの異なるベクトルに対応付けられた情報に基づいてセットされてもよい。
【００１９】
ある場合において、水平評価ユニットは、フラグレジスタのロケーションについても異なる集合について動作するように制御されてもよい。例えば、図６は、ある実施例に従う方法のフローチャートを示す。６０２において、ＳＩＭＤ実行エンジンのチャネルについての少なくとも１つの集合に対応付けられた指示が、受信される。６０４において、チャネルについてのその集合に関連付けられたビットが評価される。
【００２０】
水平評価ユニットは、例えば、「ＡＬＬ４」という条件の指示を受信するかもしれない。図４を再び参照すれば、この条件は、（１）フラグレジスタ内の、チャネル０から３に対応するビット、および、（２）フラグレジスタ内の、チャネル４から７に対応するビットの双方について、全てのフラグビットが１であるかどうかを、水平評価ユニット４０３により別々に評価させることができる。
【００２１】
それぞれの評価の結果は、その後、ＳＩＭＤ実行エンジンのチャネルの集合を表すその出力の中の、ビットの集合に格納される。例えば、チャネル０から３に対応する、フラグレジスタ４２０内の全てのビットがセットされている場合には、チャネル０から３に対応する、その出力の中の全てのビットがセットされるかもしれない。同じように、チャネル４から７に対応する、フラグレジスタ４２０内の全てのビットがセットされる場合、チャネル４から７に対応する、その出力の中の全てのビットがセットされ得る。図４に示した場合において、その出力は「００００  １１１１」になるであろう。
【００２２】
水平評価ユニット４３０により受信された指示は、ＳＩＭＤ実行エンジンのチャネルについての、サイズの異なる集合に関連付けられてもよい。例えば、既に述べたように、水平評価ユニット４３０により評価された集合は、１つの８ビットの集合、または、２つの４ビットの集合に関連付けられてもよい。他の例によれば、水平評価ユニット４３０は、フラグのペアの４つが評価されるべきことを意味する条件である「ａｎｙ２」に関連付けられた指示を受信してもよい（そして、それぞれの評価の結果は、出力における、対応する２ビットにマップされる。）。図４に示した場合において、その出力は「１１００  １１１１」になるであろう。
【００２３】
如何なるサイズの集合、または、サイズの集合の如何なる組合せも、提供可能であることに注意されたい（そして、集合内のビットは隣り合う必要が無いことに注意されたい）。例えば、１６ビットのフラグレジスタを考える。この場合、８つの２ビットの集合が評価され得る。他の例では、２つの最も大きいビット（ＭＳＢｓ）および、２つの最も小さいビット（ＬＳＢｓ）が組み合わされて、第１の集合として評価され得る一方で、残りの１２のビットが第２の集合として評価される。
【００２４】
これらの種類の「水平」評価操作は、単一のフラグレジスタ４２０に渡って情報をグループ化、再配置、および／または、評価してもよい。次に、２つの８ビットフラグレジスタ７２０（ｆ０およびｆ１）を有する図７のシステム７００を参照されたい。２つのフラグレジスタ７２０が図７に説明されているが、２個より多いものが提供されてもよい。
【００２５】
次に、ＳＩＭＤ実行エンジンのための以下の命令を考えよう。
ａｄｄ．ｆ０．ｚ    ｒ０    ｒ１    −ｒ２
ａｄｄ．ｆ１．ｚ    ｒ３    ｒ４    ｒ５
【００２６】
この場合、レジスタｒ２の値がレジスタｒ１の値から差し引かれ、その結果がレジスタｒ０に格納され、そして、その結果がゼロと等しい場合に（「．ｚ」）フラグレジスタ０（「．ｆ０」）がセットされる。この命令は、８つのオペランドのデータについて同時に実行され得ること（そして、ｆ０内の８ビット全てが同時に更新され得ること）に注意されたい。同じように、レジスタｒ５内の値にはレジスタｒ４内の値が加算され、その結果はレジスタｒ３に格納され、そして、その結果がゼロと等しい場合に（「．ｚ」）フラグレジスタ１（「．ｆ１」）内のビットがセットされる。
【００２７】
ある実施例において、垂直評価ユニット７４０は、ｎビットの出力を生成するために提供されてもよく、そして、その出力は、フラグレジスタ７２０の双方からの情報に基づく値を有する少なくとも１つのビットを含む。例えば、垂直評価ユニット７４０は、ｆ１の８ビットと共にｆ０の８ビットを受信してもよく、８ビットの出力を生成してもよい。
【００２８】
図８は、ある実施例に従う方法のフローチャートである。その方法は、例えば、図７のシステム７００に関連付けられてもよい。８０２において、情報は、ｎを１より大きい整数とし、ｎチャネルＳＩＭＤ実行エンジンにおいて、第１のｎロケーションフラグレジスタに格納される。同様に、情報は、８０４において、その実行エンジンにおける、第２のｎロケーションフラグレジスタに格納される。８０６において、第１のフラグレジスタおよび第２のフラグレジスタの双方からの情報に基づく値を有する、少なくとも１つのロケーションを含む出力が、生成される。
【００２９】
図７を再び参照すると、垂直評価ユニット７４０は、ｆ０（またはｆ１）の値を出力として通過させるように制御されてもよい。この場合において、図７に説明されるその出力は、ｆ０の場合において「０１００  １１０１」であろう（ｆ１の場合において「１１０１  ０１１１」）。ある実施例において、垂直評価ユニット７４０は、その出力を生成するために、ｆ０およびｆ１の双方からの情報を組み合わせてもよい。例えば、垂直評価ユニット７４０は、「ａｌｌ２」の状態に関連付けられた指示を受け取ってもよく、その状態は、出力に含まれるあるビットが、そのビットに対応する、ｆ０およびｆ１の双方におけるビットがセットされている場合においてのみ、セットされるべきというようなことを示す（例えば、図７の出力は「０１００  ０１０１」であろう。）。同様に、「ａｎｙ２」状態は、図７において「１１０１  １１１１」の出力をもたらしてよい。
【００３０】
「垂直」評価ユニット７４０は、このように、異なるフラグレジスタ７４０に渡って情報を組み合わせてもよい。ある場合において、垂直評価ユニット９４０は、フラグレジスタの集合に渡って情報を組み合わせてもよい。例えば、４つの８ビットフラグレジスタ９２０（ｆ０からｆ３）を有する、図９のシステム９００を考えよ。さらに、垂直評価ユニット９４０は、それぞれのフラグレジスタから８ビットを受信し、８ビットの出力を生成する。
【００３１】
図１０は、そのようなシステム９００に対応付けられた方法を示す。９０２において、フラグレジスタの集合に関連付けられた指示が受信される。その指示は、垂直評価ユニット９４０を、例えば、フラグレジスタのうちの１つ、または、４つのフラグレジスタ全てについて、動作させるように制御してもよい。
【００３２】
ある実施例に従うと、垂直評価ユニット９４０は、フラグレジスタの他の集合について動作するように制御されてもよい。例えば、垂直評価ユニット９４０は、ｆ０およびｆ１を評価する（そして、ｆ２およびｆ３を無視する）ように制御されてもよい。他の例において、垂直評価ユニット９４０は、ｆ０、ｆ２およびｆ３について動作する（そして、ｆ４を無視する）ように制御されてもよい。
【００３３】
ＳＩＭＤ実行エンジンのそれぞれのチャネルについて、その集合の中のフラグレジスタが提供している、そのチャネルを表すビットが、１００４において評価される。これらの評価の結果は、１００６において適切な出力ビットに格納される。
【００３４】
再び図９を参照し、ｆ０およびｆ１が評価されるべきであって、かつ、それぞれの出力ビットが、これら２つのフラグレジスタの双方における対応するビットが１にセットされた場合かつその場合にのみセットされるべきことを示す指示を、垂直評価ユニット９４０が受信したと仮定しよう。そのとき、図９の例において、その出力は、「０１００  １１１１」であろう。もし垂直評価ユニット９４０が、その代わりに、ｆ２およびｆ３を評価するように制御されていたならば、その出力は「１１００  １１００」だったであろう。
【００３５】
ある実施例に従うと、水平および垂直評価動作もサポートされ得る。例えば、４つの８ビットフラグレジスタ１１２０（ｆ０からｆ３）を有する、図１１のシステム１１００を考えよう。ある実施例に従うと、マルチプレクサ１１５０は、８ビットのデータまたは８個の結果ビット（例えば、それぞれのビットは１またはそれより多いＡＬＵフラグを表す）がフラグレジスタ１１２０に格納されるかどうかを決定する。さらに、ＳＩＭＤ実行ユニットのバックエンドは、ｆ０からｆ３の何れがその情報を格納するかを選択するために、例えば、フラグライト、フラグセレクト、コマンドを使用してもよい。
【００３６】
ある実施例に従うと、水平評価ユニット１１３０は、それぞれのＳＩＭＤ実行チャネルのために４つのビット（それぞれのフラグレジスタから供給されるもの）を受信し、そして、８ビットの出力を生成する。垂直評価ユニット１１４０は、それぞれのフラグレジスタから供給される８ビット（それぞれのＳＩＭＤ実行チャネルのために）を受信し、そして、８ビットの出力を生成する。水平評価ユニット１１３０および垂直評価ユニット１１４０は、ここで述べた如何なる実施例に従って動作してもよいし、例えば、ＳＩＭＤ実行エンジンのフロントエンドによって、制御されてもよい。
【００３７】
マルチプレクサ１１６０は、実行ユニットのフロントエンドが水平評価ユニット１１３０の出力または垂直評価ユニット１１４０の出力を受信するかどうかを決定してもよい。例えば、ある命令がシステム１１００にフラグレジスタについて水平評価を実行させることができるのに対し（例えば、「ａｎｙ２ｈｏｒｉｚｏｎｔａｌ  ｆｏｒ  ｆ２」はｆ２のビットの組を評価させる）、他の命令は垂直評価をもたらす（例えば、「ａｌｌ４ｖｅｒｔｉｃａｌ」はそれぞれのチャネルについて４ビットを評価させる）。
【００３８】
フラグレジスタ１１２０の情報は、様々な方法によって効率的かつ柔軟にアクセスされ得るので、システム１１００のパフォーマンスを向上させることができる。例えば、フラグビットについての、クロスチャネルの分散および論理の組合せは、そうでなければソフトウェアを介してそのようなフラグ評価をするために必要であった命令の量を、減少させることができる。
【００３９】
さらに、８チャネルおよび１６チャネルの動作をサポートする実行エンジンを考えよう。ある実施例に従うと、水平評価動作は、８チャネルの動作がイネーブルされた場合に、水平評価動作は、全てのフラグレジスタのビットの使用を促進することができる（例えば、２つの、８チャネルの、フラグレジスタ・ビットの集合が、水平評価動作のために使用されてもよい。）。これに加えて、ＳＯＡおよびＡＯＳプログラミングもサポートされる。
【００４０】
図１２はある実施例におけるシステム１２００のブロック図である。そのシステム１２００は、例えば、デジタルテレビジョン信号を記録し、および／または、表示するように適応されたメディア・プロセッサに関連付けられてもよい。そのシステム１２００は、ｎオペランドのＳＩＭＤ実行エンジンであって、ここで述べる何れかの実施例に従うＳＩＭＤ実行エンジン１２２０を有する、グラフィックス・エンジン１２１０を有する。例えば、そのＳＩＭＤ実行エンジン１２２０は、１またはそれより多いフラグレジスタのための、水平および／または垂直の評価ユニットを有してよい。そのシステム１２００は、ＳＩＭＤ命令を格納する命令メモリユニット１２３０、および、グラフィックスデータ（例えば、３次元のイメージに関連付けられたベクトル）を格納するためのグラフィックスメモリユニット１２４０をさらに有してもよい。命令メモリユニット１２３０およびグラフィックスメモリユニット１２４０は、例えば、ランダム・アクセス・メモリ（ＲＡＭ）ユニットを備えてよい。ある実施例に従うと、そのシステム１２００は、ハードディスクドライブ１２５０を（例えば、メディア情報を格納し、および、提供するために）更に有する。
【００４１】
以下は、様々な追加の実施例を説明するものである。これらは全ての可能な実施例の定義を構成するものでなく、かつ、当業者であれば、多くの他の実施例が可能であることを理解しよう。さらに、以下の実施例は明瞭性のため簡潔に述べられるが、これらの並びに他の実施例および応用を、もし必要であれば、上述の説明に適合させるために、どのような変更を施すべきかを、当業者であれば理解しよう。
【００４２】
ある評価動作がここでは例として述べられるが、実施例は、相当に多数の方法によって、フラグレジスタの情報を再配置し、および／または、再構成してもよい。例えば、水平評価ユニットは、３２ビットのフラグレジスタのうちの１６個のＬＳＢを、１６個のＭＳＢと交換してもよい。同様に、フラグレジスタのあるビットは、他のビットに複製されてもよい（例えば、グラフィックス・ベクトルのＸ成分に対応付けられたフラグビットは、このベクトルの他の３成分に対応付けられたフラグビットのために複製されてもよい。）。
【００４３】
他の例として、以下の何れのビットもセットされていないかどうかを決定付けることが役立つ場合について考えよう。それらのビットとは、（１）ＳＩＭＤ実行チャネル０から３に関連付けられた、ｆ２のビット、および、（２）ＳＩＭＤ実行チャネル４から７に関連付けられた、ｆ０のビットである。この場合において、水平評価ユニットは、出力を生成するための適切な評価を実行する前に、それぞれの実行チャネルのために４つのフラグレジスタの全てについてのビットを受信してもよく、そして、情報について組み立てた８ビットの集合を生成してもよい。
【００４４】
さらに他の例では、システムは、チャネル０から３を用いる第１のグラフィックス・ベクトル、および、チャネル４から７を用いる第２のグラフィックス・ベクトルを処理してもよい。これに加えて、チャネル毎を基準として、次に述べる双方の事項が正しいかどうかを、決定付けることが役立つ場合について考えよう。その事項とは、（１）ｆ０内のビットおよびｆ１内のビットが第２のグラフィックス・ベクトルについてゼロであること、および、（２）ｆ２内のビットおよびｆ３内のビットが第１のグラフィックス・ベクトルについてゼロであること、である。この場合において、評価ユニットは、垂直評価操作のを実行する前に、ｆ２の下位の４ビットをｆ２の上位の４ビットと交換してもよい（そして、ｆ３について同様の操作を実行する）。
【００４５】
これに加えて、ここで述べる実施例は、マルチスレッドのＳＩＭＤ実行エンジンをサポートしてもよい。例えば、４つのフラグレジスタを伴う、３つのスレッドを実行可能な、１６チャネルのＳＩＭＤを考えよう。この場合において、水平評価ユニットは、１６の実行チャネルのそれぞれのために、４つのビットの集合を３つ受信し得る（４つのフラグレジスタの３つのスレッド）。同様に、垂直評価ユニットは、４つのフラグレジスタのそれぞれのために、１６のビットを３つ受信し得る（１６チャネルの３つのスレッド）。
【００４６】
ここで述べる幾つかの実施例は、単に、説明を目的としている。この記述から、当業者であれば、このクレームのみによって限定される、変更および代替を伴って、他の実施例が実施され得ることを、認識するであろう。
【図面の簡単な説明】
【００４７】
【図１】図１および２は、プロセッシング・システムを示す。
【図２】図３は、２つのベクトルをほぼ同時に処理するプロセッシング・システムを示す。  図４は、ある実施形態に従う、ＳＩＭＤ実行エンジンのフラグレジスタのための、水平評価ユニットを示す。
【図３】図５は、ある実施形態に従う方法のフローチャートを示す。  図６は、ある実施形態に従う方法のフローチャートを示す。  図７は、ある実施形態に従う、ＳＩＭＤ実行エンジンのフラグレジスタのための垂直評価ユニットを示す。
【図４】図８は、ある実施形態に従う方法のフローチャートを示す。  図９は、ある実施形態に従う、ＳＩＭＤ実行エンジンのフラグレジスタのための垂直評価ユニットを示す。  図１０は、ある実施形態に従う方法のフローチャートを示す。
【図５】図１１は、ある実施形態に従う、ＳＩＭＤ実行エンジンのフラグレジスタのための、水平および垂直評価ユニットを示す。
【図６】図１２は、ある実施形態に従うシステムのブロック図を示す。
【図１】
2008524723.tif 000003
【図２】
2008524723.tif 000004
【図３】
2008524723.tif 000005
【図４】
2008524723.tif 000006
【図５】
2008524723.tif 000007
【図６】
2008524723.tif 000008
【国際調査報告】
2008524723.tif 000009
2008524723.tif 000010
2008524723.tif 000011