(57)【特許請求の範囲】
【請求項１】
半導体プロセッサにおいて論理的縮約命令を実行する方法であって、前記実行は：
複数の要素をもつベクトルをレジスタに記憶する段階と；
前記ベクトルの要素をスウィズル回路によりスウィズルして第一のスウィズル・ベクトルを形成する段階と；
前記ベクトルおよび前記第一のスウィズル・ベクトルに対してベクトル論理回路によりベクトル論理演算を実行して第一の中間ベクトルを形成する段階と；
前記第一の中間ベクトルの要素をスウィズル回路によりスウィズルして第二のスウィズル・ベクトルを形成する段階と；
ベクトル論理回路により前記ベクトル論理演算を実行して第二の中間ベクトルを形成する段階と；
前記第二の中間ベクトルの要素の全部より少ない要素に対して論理演算を実行する段階とを含む、
方法。
【請求項２】
前記ベクトル論理演算および前記論理演算がベクトルAND演算およびAND演算である、請求項１記載の方法。
【請求項３】
前記ベクトル論理演算および前記論理演算がベクトルOR演算およびOR演算である、請求項１記載の方法。
【請求項４】
前記ベクトル論理演算および前記論理演算がベクトルXOR演算およびXOR演算である、請求項１記載の方法。
【請求項５】
前記第二の中間ベクトルの要素の全部より少ない要素に対して実行される前記論理演算がベクトル論理演算である、請求項１記載の方法。
【請求項６】
前記第一のスウィズル・ベクトルを形成する前記スウィズル回路および前記第二のスウィズル・ベクトルを形成する前記スウィズル回路が同じスウィズル回路である、請求項１記載の方法。
【請求項７】
論理的縮約命令を実行する論理回路を有する半導体プロセッサであって、前記論理回路は：
ベクトルの要素をスウィズルして第一のスウィズル・ベクトルを形成するスウィズル回路と；
前記ベクトルおよび前記第一のスウィズル・ベクトルに対してベクトル論理演算を実行して第一の中間ベクトルを形成するベクトル論理回路とを有しており、
前記スウィズル回路は、前記第一の中間ベクトルの要素をスウィズルして第二のスウィズル・ベクトルを形成し、前記ベクトル論理回路は前記ベクトル論理演算を実行して第二の中間ベクトルを形成し、前記論理回路は前記第二の中間ベクトルの要素の全部より少ない要素に対して論理演算を実行する、
半導体プロセッサ。
【請求項８】
前記スウィズル回路がマルチプレクサを含む、請求項７記載の半導体プロセッサ。
【請求項９】
前記スウィズル回路がデマルチプレクサを含む、請求項７記載の半導体プロセッサ。
【請求項１０】
前記ベクトル論理回路の出力から前記ベクトル論理回路の入力までデータ経路が存在する、請求項７記載の半導体プロセッサ。
【請求項１１】
前記論理的縮約命令を実装するために使われるマイクロ演算を記憶するROMをさらに有する、請求項１０記載の半導体プロセッサ。
【請求項１２】
前記ベクトル論理演算が：
ベクトルAND；
ベクトルOR；および
ベクトルXOR
のうちの一つである、請求項１０記載の半導体プロセッサ。
【請求項１３】
論理的縮約命令を実行する論理回路を有する半導体プロセッサ、グラフィック・プロセッサおよび前記グラフィック・プロセッサに結合されたディスプレイを有するコンピューティング・システムであって、前記論理回路は：
ベクトルの要素をスウィズルして第一のスウィズル・ベクトルを形成するスウィズル回路と；
前記ベクトルおよび前記第一のスウィズル・ベクトルに対してベクトル論理演算を実行して第一の中間ベクトルを形成するベクトル論理回路とを有しており、
前記スウィズル回路は、前記第一の中間ベクトルの要素をスウィズルして第二のスウィズル・ベクトルを形成し、前記ベクトル論理回路は前記ベクトル論理演算を実行して第二の中間ベクトルを形成し、前記論理回路は前記第二の中間ベクトルの要素の全部より少ない要素に対して論理演算を実行する、
コンピューティング・システム。
【請求項１４】
前記ベクトル論理回路の出力から前記ベクトル論理回路の入力までデータ経路が存在する、請求項１３記載のコンピューティング・システム。
【請求項１５】
前記論理的縮約命令を実装するために使われるマイクロ演算を記憶するROMをさらに有する、請求項１４記載のコンピューティング・システム。
【請求項１６】
前記ベクトル論理演算が：
ベクトルAND；
ベクトルOR；および
ベクトルXOR
のうちの一つである、請求項１３記載のコンピューティング・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野は概括的にはコンピュータ・システムに、より詳細にはベクトル論理的縮約（vector  logical  reduction）を実行するプロセッサ・アーキテクチャに関する。
【背景技術】
【０００２】
計算機科学の分野では二つの型のプロセッサ・アーキテクチャが広く認識されている。「スカラー」と「ベクトル」である。スカラー・プロセッサは単一セットのデータに対して演算を実行する命令を実行するよう設計される。一方、ベクトル・プロセッサは複数セットのデータに対して演算を実行する命令を実行するよう設計される。図１のＡおよびＢはスカラー・プロセッサとベクトル・プロセッサの間の基本的な相違を例証する比較例を示している。
【０００３】
図１のＡは、単一オペランド・セットAおよびBがANDされて単数の（すなわち「スカラー」の）結果Cを生ずる（すなわちAB＝C）スカラーAND命令の例を示している。これに対し、図１のＢは、二つのオペランド・セットA/BおよびC/Dが並列にそれぞれANDされて同時にベクトル結果C、Fを生ずる（すなわちAB＝C、DE＝F）ベクトルAND命令の例を示している。
【０００４】
当技術分野においてよく知られるように、入力オペランドおよび出力結果はいずれも専用のレジスタに記憶される。たとえば、多くの命令は二つの入力オペランドをもつ。したがって、それぞれの入力オペランドを一時的に記憶するために二つの相異なる入力レジスタが使われる。さらに、これらの同じ命令は出力値を生じ、該出力値は一時的に第三の（結果）レジスタに記憶される。それぞれの入力１０１ａ、ｂおよび１０２ａ、ｂおよび結果レジスタ１０３ａ、ｂが図１のＡおよびＢにおいて観察される。特に、「スカラー」と「ベクトル」の特徴が容易に見て取れる。
【０００５】
すなわち、図１のＡのスカラー設計の入力レジスタ１０１ａおよび１０２ａはスカラー値（それぞれAおよびB）のみを保持しているのが観察される。同様に、図１のＡのスカラー設計の結果レジスタ１０３ａもスカラー値（C）のみを保持しているのが観察される。これに対し、図１のＢのベクトル・システムの入力レジスタ１０１ｂおよび１０２ｂはベクトル（レジスタ１０１ｂではA,D、レジスタ１０２ｂではB,E）を保持しているのが観察される。同様に、図１のＢのベクトル・システムの結果レジスタ１０３ｂもベクトル値（C,F）を保持しているのが観察される。用語法として、図１のＢのベクトル・システムのレジスタ１０１ｂ、１０２ｂおよび１０３ｂのそれぞれの内容は全体的に「ベクトル」と称することができ、ベクトル内の個々のスカラー値のそれぞれは「要素」と称することができる。よって、たとえば、レジスタ１０１ｂは、「要素」Aおよび「要素」Dからなる「ベクトル」A,Dを記憶していることが観察される。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
根底にあるプロセッサがスカラー設計かベクトル設計かによらず、いくつかのコンピュータ・システムは単一ベクトルの諸要素を横断しての論理演算を事実上必要とする。たとえば八入力AND演算の場合（その論理図を図２のＡに示す）、八個の別個の入力（A、B、C、D、E、F、G、H）がANDされて最終的なスカラー結果（R）を生じる。スカラー・プロセッサの場合、スカラーAND命令の七回の反復工程にわたって結果を蓄積するループ動作をソフトウェアで書く必要がある（その擬似コードを図２のＢに示す）。よって、スカラー・プロセッサの場合、複数の反復工程は、その計算を実行するために、スカラーAND命令の複数の実行を必要とする。
【０００７】
これに対し、ベクトル・プロセッサは、そのような演算を、当該論理演算をそのまま実行するよう設計された単一命令の実行で実装する展望がありうる。
【課題を解決するための手段】
【０００８】
本発明は、限定ではなく例として、付属の図面において例解される。図面において同様の参照符号は同様の要素を示す。
【図面の簡単な説明】
【０００９】
【図１】ＡおよびＢはスカラーおよびベクトル論理演算を示す。
【図２】ＡおよびＢは八入力AND関数およびスカラーAND命令を用いた対応する擬似コードの論理図である。
【図３】論理的縮約演算を実行するための、半導体プロセッサによって実行されるプロセスを示す。
【図４】図３のプロセスの第一の実施形態を示す。
【図５】図４のプロセスの第二の実施形態を示す。
【図６Ａ】図５のプロセスの第三の実施形態を示す。
【図６Ｂ】スウィズル操作が同じである実施形態を示す。
【図７】図３のプロセスを実行できる電子回路の設計を示す。
【図８】半導体プロセッサの図である。
【図９】コンピューティング・システムの図である。
【発明を実施するための形態】
【００１０】
図３は、ベクトル命令を実行する機能のあるプロセッサ上で、「論理的縮約（logical  reduction）」とも称される、ベクトルの諸要素を横断して論理演算を実行する方法論を示している。図４は、図３の方法論に従う八入力AND関数の例を示している。読者が図３の方法論を理解するのを助けるため、図３および図４の両方を参照する。図４の例では、ベクトル入力４００が要素（A、B、C、D、E、F、G、H）をもち、これらが八入力ANDによってANDで結合されて出力結果R＝ABCDEFGを生ずる。
【００１１】
図３の方法論によれば、ベクトル入力４００に対して第一のスウィズル（swizzle）〔かき混ぜ〕演算が実行されて（３０１、４０１）第一のスウィズル・ベクトル４０２を生ずる。図４の例では、第一のスウィズル操作４０１は、挿入図４２０に示されるパターンに観察されるように、隣り合う要素対の位置が交換される二元スウィズル操作である。次いで当該縮約の論理演算のベクトル論理演算がベクトル入力４００および第一のスウィズル・ベクトル４０２を入力ベクトルとして使って実行される（３０３、４０３）。図４の例では、論理的縮約は八入力AND関数に対応するので、論理演算３０３、４０３はベクトルAND演算に対応する。しかしながら、交換動作をもつ他の論理的縮約および対応する論理演算（OR、加算（ADD）および「乗算」（MUL）など）も図３のアプローチに整合させることができる。
【００１２】
論理演算３０３、４０３の結果は第一の中間結果４０４を生ずる。第一のスウィズル操作とは異なる第二のスウィズル操作３０５、４０５が第一の中間結果４０４に対して実行されて第二のスウィズル・ベクトル４０６を生ずる。図４の例では、第二のスウィズル操作４０５は、挿入図４３０に示されるパターンに観察されるように、近隣の要素の位置が交換される単独スウィズル操作である。次いで当該縮約の論理演算のもう一つのベクトル論理演算が第一の中間結果４０４および第二のスウィズル・ベクトル４０６を入力ベクトルとして使って実行される。
【００１３】
ここでもまた、図４の例が論理的AND縮約に対応するため、図４の論理演算４０７はベクトルAND演算に対応する。第二のベクトル論理演算３０７、４０７の結果が第二の中間結果４０８を生ずる。次いで、当該縮約の論理演算の論理演算が、第二の中間結果４０８の選択された要素に対して実行されて、求めるべき縮約結果４１０を生ずる。図４の例では、第二の中間結果の選択された要素は第二の中間結果４０８の一番目および八番目の位置における要素に対応する。しかしながら、第二の中間結果４０８を見てみれば、第一ないし第四の要素のうちの任意の一つおよび第五ないし第八の要素のうちの任意の一つを選択すれば正しい縮約結果が得られることがわかる。
【００１４】
最後の論理演算３０９、４０９を実行するための特化された論理および／またはマイクロコード演算の設計を防ぐために、いくつかのフォーマット・ステップが第二の中間結果４０８に対して実行されてもよい。それによりステップ３０３、４０３および３０７、４０７において使用された同じベクトル論理演算が、演算３０９、４０９（すなわち、図４の例の場合、ベクトルAND演算）を実装するために使われる。たとえば、選択された要素の一方が、他方の選択された要素と同じベクトル位置に置かれ、残りのベクトル要素値に0をパディングすることに従ったベクトルが構築されてもよい（たとえば、図４の例では、ベクトル４０８をフォーマットして、構築されたベクトル[0,0,0,0,0,0,0,ACBD]を構築）。構築されたベクトルおよび第二の中間結果４０８に対してベクトルAND演算を実行すると、出力ベクトルの同じベクトル位置に、所望される論理的縮約結果４１０を生ずる。ここで、選択されたオペランドは構築されたベクトル中に見出される（すなわち、上述の構築されたベクトルの例を使うと、R＝0,0,0,0,0,0,0,ACBDHFGE）。
【００１５】
異なるスウィズル操作のシーケンスおよびスウィズル操作自身は実施形態によって変わりうることを注意しておくことは重要である。たとえば、図５は図４の例で、単独スウィズル・パターン５３０が二元スウィズル・パターン５２０より前に実行されるようにしたものに対応する。図４と図５の例を比較すると、利用可能な項は第二の中間ベクトル５０８において生成されて正しい結果が得られる。
【００１６】
また、上記で論じた単独および二元スウィズル・パターン４２０／５２０、４３０／５３０以外の異なるスウィズル・パターンを使ってもよいことを注意しておくことも重要である。たとえば、図６は、挿入図６４０において観察されるようなパターンで近隣の要素四つ組の位置が交換される四元スウィズル・パターンを使う十六要素ベクトルに対する論理的AND縮約の例を示している。
【００１７】
また、スウィズル・パターン自身が異なる必要はない。たとえば、図６ｂは、同じスウィズル・パターンが演算を通じて最初から最後まで利用される論理的AND縮約を示している。
【００１８】
いずれの実施形態についても、当業者は、適切なスウィズル・パターン、第二の中間ベクトルの対応する選択基準および最終ベクトル論理演算前の任意の関連するフォーマット整形を決定することができるであろう。さらに、上記の例はAND縮約を強調したが、同じ原理は論理的OR、加算および乗算といった交換性の動作をもつ任意の演算を実施するためにも適用できる。
【００１９】
上記で論じたように、論理的縮約アルゴリズムは、半導体プロセッサの命令セット内の命令として実装されてもよい。図７は、プロセッサの諸実行ユニット内で論理回路として実装されうる可能なデータ経路を示している。図７の回路図によれば、論理的縮約を通じて論理的に縮約されるべき要素をもつ入力ベクトルがレジスタ７０１に記憶されている。レジスタ７０１の出力は第一のスウィズル回路７０２の入力および第一のベクトル論理演算（たとえばベクトルAND、ベクトルORまたはベクトルXOR）を実行する第一のベクトル論理回路７０４の入力に流れ込む。第一のスウィズル回路７０２の出力は第一のスウィズル・レジスタ７０３に流れ込む。第一のスウィズル・レジスタ７０３の出力は第一のベクトル論理回路７０４に流れ込む。よって、第一のベクトル論理回路７０４はレジスタ７０１から第一の入力ベクトルを、レジスタ７０３から第二の入力ベクトルを受け入れる。
【００２０】
第一の中間値レジスタ７０５は第一のベクトル論理回路７０４によって生成される出力ベクトルを保持する。次いで、レジスタ７０５の内容は第二のスウィズル論理回路７０６および第二のベクトル論理演算を実行する第二のベクトル論理回路７０８に与えられる。第二のスウィズル論理回路７０６の出力は第二のスウィズル・レジスタ７０７に与えられ、第二のスウィズル・レジスタ７０７はその出力を第二のベクトル論理回路７０８に与える。第二のベクトル論理回路７０８はその出力を第二の中間レジスタ７０９に与える。選択およびフォーマット論理７１０は、第二の中間レジスタ７０９内のベクトルの、第三のベクトル論理回路７１１によって実行される最終的なベクトル論理演算のためのオペランドとして必要とされる要素を選択する（そしてその任意のものをフォーマット整形してもよい）。第三のベクトル論理回路７１１の結果は、最終結果（論理的縮約）に対応し、結果レジスタ７１２に記憶される。図３のアルゴリズムを実装するために、さらなる段のスウィズル回路、中間ベクトル・レジスタおよびベクトル論理回路（図示せず）が追加的に図７の回路に組み込まれてもよいことを注意しておく。
【００２１】
図７のコンポーネントのいくつかを使うがそれでも論理的縮約を実行するさまざまな代替的な論理設計も可能である。たとえば、論理的縮約のための回路が「直線」データ経路中の（たとえば、複数のマイクロ演算なし）論理的縮約命令の実行に専用である場合、レジスタ７０３、７０５、７０７、７０９の任意のものをなくしてもよい。これに対し、論理的縮約命令がいくつかの対応するマイクロ演算をもつマイクロコードを介して実行される場合には、図７の要素のいくつかがなくされ、一方、他が再利用されてもよい。
【００２２】
たとえば、レジスタ７０５およびレジスタ７０７のそれぞれの出力が入力として論理７０４にフィードバックされれば、第一および第二のベクトル論理演算はベクトル論理７０４を用いて実行できる（それによりベクトル論理７０８をなくせる）。（ここで、マイクロ演算制御マルチプレクサまたは他のデータ経路制御回路がアルゴリズムに従ってデータを適正に動かすことが理解される。）選択およびフォーマット論理７１０がレジスタ７０５からの入力を受け入れて、その出力を（第三かつ最終的な論理演算をも実行する）ベクトル論理７０４に与えるならば、ベクトル論理７１１をさらになくすことができる。
【００２３】
第一および第二のスウィズル回路７０２、７０６は、それぞれのチャネル選択入力値の状態に基づいて正しいスウィズル・パターンの間で切り換えを行う、マルチプレクサおよび／またはデマルチプレクサの共通のバンクにマージされることもできる。すなわち、マルチプレクサおよび／またはデマルチプレクサのチャネル選択入力が第一のスウィズル・パターンに対応する第一の入力値を受け取り、第二のスウィズル・パターンに対応する第二の入力値を受け取る。マルチプレクサおよび／またはデマルチプレクサは、所望されるスウィズル伝達（transfer）を実施するよう、チャネル選択値に応答してデータ経路を形成する。
【００２４】
拡張された実装では、レジスタ７０１に記憶されている入力ベクトルの要素の全部より少ないものが、論理的に縮約されることができる。その際、その論理的縮約のために考慮されない要素については、（レジスタ７０１に先行または後続する）フォーマット回路が入力ベクトル中に穏和な（benign）値を強制する。たとえば、論理的縮約が入力ベクトルA,B,C,D,E,F,G,Hの要素A、B、C、Dのみの論理的縮約である場合、フォーマット論理は、要素E、F、G、Hのそれぞれについてすべて1の値を挿入し、ベクトルA,B,C,D,[全部1],[全部1],[全部1],[全部1]が縮約のための入力ベクトルとして処理される。ORおよびXOR論理的縮約については、穏和な値は全部1ではなく全部0に対応する。
【００２５】
上記で図７を参照して論じたように、アルゴリズムは、半導体プロセッサの実行ユニットによって実行されるベクトル論理的縮約命令内で実装されてもよい。
【００２６】
図８は、複雑命令セット（CISC:  Complex  Instruction  Set）、簡略化命令セット（RISC:  Reduced  Instruction  Set）および超長命令語（VLIW:  Very  Long  Instruction  Word）のような多くの異なる型の処理コア・アーキテクチャを記述すると信じられる一般的な処理・コア８００を示している。図８の一般的な処理コア８００は次のものを含む：１）（たとえばキャッシュおよび／またはメモリから）命令をフェッチするフェッチ・ユニット８０３；２）命令をデコードするデコード・ユニット８０４；３）実行ユニット８０６への命令発行のタイミングおよび／または順序を決定するスケジュール・ユニット８０５（注意すべきことに、スケジューラは任意的である）；４）命令を実行する実行ユニット８０６（典型的な命令実行ユニットはブランチ実行ユニット、整数算術実行ユニット（たとえばALU）浮動小数点算術実行ユニット（たとえばFPU）およびメモリ・アクセス実行ユニットを含む）；および５）命令の成功裏の完了を示すリタイア・ユニット８０７。注意すべきことに、処理コア８００はマイクロコード８０８を用いても用いなくてもよい。
【００２７】
マイクロコードのあるプロセッサの場合、マイクロ演算は典型的には、プロセッサがその上に構築される半導体チップ内の（読み出し専用メモリ（ROM:  Read  Only  Memory）のような）不揮発性機械可読媒体に記憶され、プロセッサ内の実行ユニットに当該命令によって呼び出される所望される機能を実行させる。
【００２８】
論理的縮約命令を有するプロセッサは、さまざまなコンピューティング・システム中に実装することもできる。図９は、コンピューティング・システム（たとえばコンピュータ）のある実施形態を示している。図９の例示的なコンピューティング・システムは次のものを含む：１）ベクトル論理的縮約命令を含むよう設計されていてもよい一つまたは複数のプロセッサ９０１；２）メモリ・コントロール・ハブ（MCH:  memory  control  hub）９０２；３）システム・メモリ９０３（これについてはDDR  RAM、EDO  RAMなどといった種々の型が存在する）；４）キャッシュ９０４；５）I/Oコントロール・ハブ（ICH:  I/O  control  hub）９０５；６）グラフィック・プロセッサ９０６；７）ディスプレイ／画面９０７（これについては陰極線管（CRT:  Cathode  Ray  Tube）、薄膜トランジスタ（TFT:  Thin  Film  Transistor）、液晶ディスプレイ（LCD:  Liquid  Crystal  Display）、DPL等のような種々の型が存在する）；８）一つまたは複数のI/O装置９０８。
【００２９】
前記一つまたは複数のプロセッサ９０１は、どんなものであれコンピューティング・システムが実装するソフトウェア・ルーチンを実行するために命令を実行する。命令はしばしば、データに対して実行される何らかの種類の操作に関わる。データおよび命令はいずれもシステム・メモリ９０３およびキャッシュ９０４に記憶される。キャッシュ９０４は典型的にはシステム・メモリ９０３より短いレイテンシー時間をもつよう設計される。たとえば、キャッシュ９０４は、プロセッサ（単数または複数）と同じシリコン・チップ（単数または複数）上に統合され、より高速のSRAMセルを用いて構築されてもよい。一方、システム・メモリ９０３はより低速のDRAMセルを用いて構築されてもよい。より頻繁に使用される命令およびデータをシステム・メモリ９０３ではなくキャッシュ９０４に記憶する傾向をもつことによって、コンピューティング・システムの全体的なパフォーマンス効率が改善される。
【００３０】
システム・メモリ９０３は意図的に、コンピューティング・システム内の他のコンポーネントに利用可能にされる。たとえば、コンピューティング・システムへのさまざまなインターフェース（たとえば、キーボードおよびマウス、プリンタ・ポート、LANポート、モデム・ポートなど）から受領されるまたはコンピューティング・システムの内部記憶要素（たとえばハードディスク・ドライブ）から取得されるデータは、しばしば、ソフトウェア・プログラムの実装において前記一つまたは複数のプロセッサ９０１によって操作される前に、システム・メモリ９０３中で一時的に待ち行列に入れられる。同様に、コンピューティング・システムからコンピューティング・システム・インターフェースの一つを通じて外部エンティティに送られるべきであるまたは内部記憶要素に記憶されるべきであるとソフトウェア・プログラムが判別するデータは、しばしば、伝送または記憶される前に、システム・メモリ９０３中で一時的に待ち行列に入れられる。
【００３１】
ICH  ９０５は、そのようなデータがシステム・メモリ９０３とその適切な対応するコンピューティング・システム・インターフェース（およびコンピューティング・システムの設計によっては内部記憶装置）との間で適正に渡されることを保証することを受け持つ。MCH  ９０２は、互いに時間的に近接して発生しうる、前記プロセッサ９０１、インターフェースおよび内部記憶要素の間でのシステム・メモリ９０３アクセスのさまざまな競合する要求を管理することを受け持つ。
【００３２】
一つまたは複数のI/O装置９０８も典型的なコンピューティング・システムにおいて実装される。I/O装置は一般に、コンピューティング・システムへおよび／またはコンピューティング・システムからデータを転送すること（たとえば、ネットワーク接続アダプター）；あるいはコンピューティング・システム内の大規模な不揮発性記憶（たとえばハードディスク・ドライブ）を受け持つ。ICH  ９０５は、自分自身と観察されるI/O装置９０５との間で双方向のポイントツーポイントのリンクをもつ。
【００３３】
以上の明細書では、本発明は、その個別的な例示的実施形態を参照して記述されてきた。しかしながら、付属の請求項において記載される本発明の広義の精神および範囲から外れることなく、さまざまな修正および変更がなされうることは明白であろう。よって、本明細書および図面は制約する意味ではなく例示的な意味で参酌されるものである。
いくつかの態様を記載しておく。
〔態様１〕
半導体プロセッサにおいて論理的縮約命令を実行する方法であって、前記実行は：
複数の要素をもつベクトルをレジスタに記憶する段階と；
前記ベクトルの要素をスウィズル回路によりスウィズルして第一のスウィズル・ベクトルを形成する段階と；
前記ベクトルおよび前記第一のスウィズル・ベクトルに対してベクトル論理回路によりベクトル論理演算を実行して第一の中間ベクトルを形成する段階と；
前記第一の中間ベクトルの要素をスウィズル回路によりスウィズルして第二のスウィズル・ベクトルを形成する段階と；
ベクトル論理回路により前記ベクトル論理演算を実行して第二の中間ベクトルを形成する段階と；
前記第二の中間ベクトルの要素の全部より少ない要素に対して前記論理演算を実行する段階とを含む、
方法。
〔態様２〕
前記ベクトル論理演算および前記論理演算がベクトルAND演算およびAND演算である、態様１記載の方法。
〔態様３〕
前記ベクトル論理演算および前記論理演算がベクトルOR演算およびOR演算である、態様１記載の方法。
〔態様４〕
前記ベクトル論理演算および前記論理演算がベクトルXOR演算およびXOR演算である、態様１記載の方法。
〔態様５〕
前記第二の中間ベクトルの要素の全部より少ない要素に対して実行される前記論理演算がベクトル論理演算である、態様１記載の方法。
〔態様６〕
前記第一のスウィズル・ベクトルを形成する前記スウィズル回路および前記第二のスウィズル・ベクトルを形成する前記スウィズル回路が同じスウィズル回路である、態様１記載の方法。
〔態様７〕
論理的縮約命令を実行する論理回路を有する半導体プロセッサであって、前記論理回路は：
ベクトルの要素をスウィズルしてスウィズル・ベクトルを形成するスウィズル回路と；
前記ベクトルおよび前記スウィズル・ベクトルに対してベクトル論理演算を実行するベクトル論理回路とを有する、
半導体プロセッサ。
〔態様８〕
態様７記載の半導体プロセッサであって、前記論理回路がさらに、前記ベクトル論理演算によって生成された結果的な中間ベクトルを記憶するレジスタに結合された第二のスウィズル回路を有しており、前記第二のスウィズル論理回路は前記中間ベクトルをスウィズルする、半導体プロセッサ。
〔態様９〕
前記スウィズル回路がマルチプレクサを含む、態様７記載の半導体プロセッサ。
〔態様１０〕
前記スウィズル回路がデマルチプレクサを含む、態様７記載の半導体プロセッサ。
〔態様１１〕
前記ベクトル論理回路の出力から前記ベクトル論理回路の入力までデータ経路が存在する、態様７記載の半導体プロセッサ。
〔態様１２〕
前記論理的縮約命令を実装するために使われるマイクロ演算を記憶するROMをさらに有する、態様１１記載の半導体プロセッサ。
〔態様１３〕
前記ベクトル論理回路の出力に結合され、前記ベクトル論理回路からの中間値ベクトルをスウィズルして第二のスウィズル・ベクトルを生成する第二のスウィズル回路と；
前記ベクトル論理回路および前記第二のスウィズル回路の出力に結合され、前記中間値ベクトルおよび前記第二のスウィズル・ベクトルに対してベクトル論理演算を実行する第二のベクトル論理回路とをさらに有する、
態様１１記載の半導体プロセッサ。
〔態様１４〕
前記ベクトル論理演算が：
ベクトルAND；
ベクトルOR；
ベクトルXOR
のうちの一つである、態様１１記載の半導体プロセッサ。
〔態様１５〕
論理的縮約命令を実行する論理回路を有する半導体プロセッサ、グラフィック・プロセッサおよび前記グラフィック・プロセッサに結合された液晶ディスプレイを有するコンピューティング・システムであって、前記論理回路は：
入力ベクトルの要素をスウィズルしてスウィズル・ベクトルを形成するスウィズル回路と；
前記入力ベクトルおよび前記スウィズル・ベクトルに対してベクトル論理演算を実行するベクトル論理回路とを有する、
コンピューティング・システム。
〔態様１６〕
態様１５記載のコンピューティング・システムであって、前記論理回路がさらに、前記ベクトル論理演算によって生成された結果的な中間ベクトルを記憶するレジスタに結合された第二のスウィズル回路を有しており、前記第二のスウィズル論理回路は前記中間ベクトルをスウィズルする、コンピューティング・システム。
〔態様１７〕
前記ベクトル論理回路の出力から前記ベクトル論理回路の入力までデータ経路が存在する、態様１５記載のコンピューティング・システム。
〔態様１８〕
前記論理的縮約命令を実装するために使われるマイクロ演算を記憶するROMをさらに有する、態様１７記載のコンピューティング・システム。
〔態様１９〕
前記ベクトル論理回路の出力に結合され、前記ベクトル論理回路からの中間値ベクトルをスウィズルして第二のスウィズル・ベクトルを生成する第二のスウィズル回路と；
前記ベクトル論理回路および前記第二のスウィズル回路の出力に結合され、前記中間値ベクトルおよび前記第二のスウィズル・ベクトルに対してベクトル論理演算を実行する第二のベクトル論理回路とをさらに有する、
態様１５記載のコンピューティング・システム。
〔態様２０〕
前記ベクトル論理演算が：
ベクトルAND；
ベクトルOR；
ベクトルXOR
のうちの一つである、態様１５記載のコンピューティング・システム。
【図１Ａ】
0005628435.tif 000002
【図１Ｂ】
0005628435.tif 000003
【図２Ａ】
0005628435.tif 000004
【図２Ｂ】
0005628435.tif 000005
【図３】
0005628435.tif 000006
【図４】
0005628435.tif 000007
【図５】
0005628435.tif 000008
【図６Ａ】
0005628435.tif 000009
【図６Ｂ】
0005628435.tif 000010
【図７】
0005628435.tif 000011
【図８】
0005628435.tif 000012
【図９】
0005628435.tif 000013