"コンピュータプロセッサでjumpnearifthewritemaskiszeroJKZD命令を実行する方法であり、書き込みマスクオペランドおよび相対オフセットを含む前記JKZD命令をフェッチする工程と、フェッチされた前記JKZD命令をデコードする工程と、前記書き込みマスクの全てのビットがゼロである場合に、前記フェッチされたJKZD命令を実行し、前記JKZD命令の命令ポインタおよび前記相対オフセットを用いて計算されるターゲット命令のアドレスへ条件付きでジャンプする工程とを備える方法。前記書き込みマスクが16ビットレジスタである、請求項1に記載の方法。前記相対オフセットが8ビットの即値である、請求項1または2に記載の方法。前記相対オフセットが32ビットの即値である、請求項1または2に記載の方法。前記JKZD命令の前記命令ポインタがEIPレジスタに格納される、請求項1から4のいずれか1項に記載の方法。前記JKZD命令の前記命令ポインタがRIPレジスタに格納される、請求項1から4のいずれか1項に記載の方法。前記JKZD命令を実行する工程がさらに、前記JKZD命令の前記命令ポインタに前記相対オフセットを加えた一時的命令ポインタを生成する工程と、前記一時的命令ポインタが前記JKZD命令を含むプログラムのコードセグメントリミット外でない場合、前記一時的命令ポインタを前記ターゲット命令の前記アドレスに設定する工程と、前記一時的命令ポインタが前記JKZD命令を含む前記プログラムの前記コードセグメントリミット外である場合、フォルトを生成する工程とを有する、請求項1から6のいずれか1項に記載の方法。前記JKZD命令を実行する工程がさらに、前記一時的命令ポインタが前記JKZD命令を含む前記プログラムの前記コードセグメントリミット外でない場合、前記JKZD命令のオペランドサイズが16ビットであれば、前記一時的命令ポインタを前記ターゲット命令の前記アドレスに設定する工程の前に、前記一時的命令ポインタの上位2バイトをクリアする工程を有する、請求項7に記載の方法。コンピュータプロセッサでjumpnearifthewritemaskisnotzeroJKNZD命令を実行する方法であり、書き込みマスクオペランドおよび相対オフセットを含む前記JKNZD命令をフェッチする工程と、フェッチされた前記JKNZD命令をデコードする工程と、前記書き込みマスクの少なくとも1つのビットがゼロでない場合に、前記フェッチされたJKNZD命令を実行し、前記JKNZD命令の命令ポインタおよび前記相対オフセットを用いて計算されるターゲット命令のアドレスへ条件付きでジャンプする工程とを備える方法。前記書き込みマスクが16ビットレジスタである、請求項9に記載の方法。前記相対オフセットが8ビットの即値である、請求項9または10に記載の方法。前記相対オフセットが32ビットの即値である、請求項9または10に記載の方法。前記JKNZD命令の前記命令ポインタがEIPレジスタに格納される、請求項9から12のいずれか1項に記載の方法。前記JKNZD命令の前記命令ポインタがRIPレジスタに格納される、請求項9から12のいずれか1項に記載の方法。前記JKNZD命令を実行する工程がさらに、前記JKNZD命令の前記命令ポインタに前記相対オフセットを加えた一時的命令ポインタを生成する工程と、前記一時的命令ポインタが前記JKNZD命令を含むプログラムのコードセグメントリミット外でない場合、前記一時的命令ポインタを前記ターゲット命令の前記アドレスに設定する工程と、前記一時的命令ポインタが前記JKNZD命令を含む前記プログラムの前記コードセグメントリミット外である場合、フォルトを生成する工程とを有する、請求項9から14のいずれか1項に記載の方法。前記実行する工程がさらに、前記一時的命令ポインタが前記JKNZD命令を含む前記プログラムの前記コードセグメントリミット外でない場合、前記JKNZD命令のオペランドサイズが16ビットであれば、前記一時的命令ポインタを前記ターゲット命令の前記アドレスに設定する工程の前に、前記一時的命令ポインタの上位2バイトをクリアする工程を有する、請求項15に記載の方法。第1書き込みマスクオペランドおよび第1相対オフセットを含むjumpnearifthewritemaskiszeroJKZD命令、並びに、第2書き込みマスクオペランドおよび第2相対オフセットを含むjumpnearifthewritemaskisnotzeroJKNZD命令をデコードするハードウェアデコーダと、デコードされた前記JKZD命令および前記JKNZD命令を実行する実行ロジックとを備え、前記デコードされたJKZD命令の実行は、前記第1書き込みマスクオペランドの全てのビットがゼロである場合に、前記JKZD命令の命令ポインタおよび前記第1相対オフセットを用いて計算される第1ターゲット命令のアドレスへの条件付きのジャンプを行い、前記デコードされたJKNZD命令の実行は、前記第2書き込みマスクオペランドの少なくとも1つのビットがゼロでない場合に、前記JKNZD命令の命令ポインタおよび前記第2相対オフセットを用いて計算される第2ターゲット命令のアドレスへの条件付きのジャンプを行う、装置。前記実行ロジックは、ベクトル実行ロジックを有する、請求項17に記載の装置。前記JKZD命令の前記第1書き込みマスクオペランドおよび前記JKNZD命令の前記第2書き込みマスクオペランドは、専用の16ビットレジスタである、請求項18に記載の装置。前記JKZD命令および前記JKNZD命令の前記命令ポインタがEIPレジスタに格納される、請求項18または19に記載の装置。以下の説明において、様々な特定的な詳細が示される。しかし、本願発明の実施形態は、これら特定的な詳細を用いずとも実施できる。他の例においては、この説明の理解を曖昧にすることを避けるべく、周知の回路、構造、および技術が詳細には示されていない。本明細書において一実施形態、実施形態、例示的な実施形態などについて言及した場合、説明される実施形態が特定の特徴、構造、または特定を含んでよいことを示し、全ての実施形態がそれら特定の特徴、構造、または特性を含んでいなければならないことを示すわけではない。さらに、そのような文言は、必ずしも同じ実施形態を指すとは限らない。さらに、ある実施形態に関連して特定の特徴、構造、または特性を説明する場合、明示的に説明されていようとされてなかろうと、当業者であれば他の実施形態に関連してそれらの特徴、構造、または特性を実施することが出来る。ジャンプ命令以下に、いくつかのジャンプ命令のいくつかの実施形態、並びに、ジャンプ命令を実行するのに用いられ得るシステム、アーキテクチャ、命令形式などの実施形態を説明する。これらジャンプ命令は、当該命令に含まれる書き込みマスクの値に基づいて、プログラムの制御フローの順序を条件付きで変更するのに用いられ得る。これら命令は、ベクトル化されたコードの制御フローを変更するのに書き込みマスクを用いる。当該マスクの各ビットは、制御フロー、つまりループの繰り返しにおける1つのSIMDフィールドのインスタンスに関連する。書き込みマスクの実施形態の詳細を以下に詳述する。典型的には以下のジャンプ命令は、動的コンバージェンスを含むループからの早い段階でのエスケープ、全てのアクティブな要素がオフとなるまでの繰り返し例えば、動き予測ダイアモンドサーチ、および有限差異アルゴリズム、マスクがゼロの場合の偽のメモリフォルトの抑制、ギャザー/スキャッタ命令の向上した性能、およびスパースなsparselypopulated述語付きコードに関する動作の節約例えば、コンパイラがメモリ内で圧縮/拡張を行えない場合などのために用いられ得る。書き込みマスクに基づく制御フローの例の多くは、書き込みマスクが全てゼロの場合のジャンプか、マスクが全てゼロでない場合のジャンプのいずれかである。例示的な高水準言語擬似コードを示す表、および、その擬似アセンブリ言語を以下に示す。VCMPPS命令は、ソースレジスタZMM1およびZMM2のデータ要素を比較し、ZMM1のデータ要素がZMM2の対応するデータ要素より小さい場合、書き込みマスクk1にマスクビットとしてデータ要素を格納する。当然、VCMPPSはそのようなシナリオに限定されず、等しい、以下である、順序付けられていない、等しくない、以上である、以上であるか等しい、順序付けられているなど他の条件に基づいて評価が行われてもよい。表1このような順序のJNZのアプローチは比較的遅く、書き込みマスクが生成された後にループから出るようジャンプするためには、2つの命令が必要となる。KORTESTk1,k1//ORk1,k1==0x0=>ZFJNZtarget_addrKORTEST命令は2つのマスクのOR演算を実行し、結果がゼロであれば、条件コードまたはステータスレジスタFLAGSまたはEFLAGSなどのゼロフラグが設定される。JNZjumpifnotzero命令はそのフラグを確認し、ゼロフラグが設定されていればターゲットアドレスへジャンプする。よって、このソフトウェアの順序には、スループットおよび長期的にはレイテンシを減らす余地がある。JKZD-Jumpnearifthewritemaskiszero最初に、jumpnearifthewritemaskiszeroJKZD命令について説明する。プロセッサがこの命令を実行することにより、ソース書き込みマスクの全ての書き込みマスクビットが0に設定されているかどうか、当該ソース書き込みマスクの値が確認され、設定されていれば、プロセッサに、宛て先オペランドおよび現在の命令ポインタによって少なくとも部分的に特定されるターゲット命令へのジャンプを実行させる。書き込みマスクビットの全てが0ではない場合よってジャンプ条件が満たされない場合、ジャンプは実行されず、JKZD命令に続く命令の実行へと続く。JKZDのターゲット命令のアドレスは典型的には、当該命令に含まれる相対オフセットオペランドEIPレジスタの命令ポインタの現在の値と相対的な符号付きオフセットによって特定される。相対オフセットrel8、rel16、またはrel32は一般的に、アセンブリコードのラベルとして特定されるが、機械コードレベルでは、命令ポインタへと加えられる、符号付きの8または32ビットの即値としてエンコードされ得る。典型的には、命令コーディングは-128から127のオフセットに関して最も効率的である。いくつかの実施形態において、オペランドサイズ命令ポインタが16ビットである場合、ターゲット命令アドレスを生成するのにEIPレジスタの上位2バイトは用いられないクリアされる。いくつかの実施形態において、64ビットのオペランドサイズの64ビットのモードにおいてRIPが命令ポインタを格納する、ジャンプニアのターゲット命令アドレスは、RIP=RIP64ビットに拡張された8ビットのオフセット符号として定義される。このモードにおいて、ジャンプニアのターゲットアドレスは、RIP=RIP64ビットに拡張された32ビットのオフセットとして定義される。この命令の例示的な形式はJKZDk1,rel8/32である。ここでk1は書き込みマスクオペランド上記にて詳述したような16ビットレジスタなどであり、rel8/32は8または32ビットの即値である。いくつかの実施形態において、書き込みマスクは異なるサイズを有する8ビット、32ビットなど。JKZDは命令のオペコードである。典型的には、各オペランドは命令において明示的に定義されている。他の実施形態において、即値は16ビットなど異なるサイズを有する。図1は、プロセッサでJKZD命令を実行する方法の実施形態を示す。101において、書き込みマスクおよび相対オフセットを含むJKZD命令がフェッチされる。103において、JKZD命令がデコードされ、105において、書き込みマスクなどのソースオペランド値が読み出される。107において、デコードされたJKZD命令が実行される。書き込みマスクの全てのビットがゼロの場合、相対オフセットおよび現在の命令ポインタに基づいて生成されたアドレスの命令へと条件付きジャンプが行われ、または、書き込みマスクの少なくとも1つのビットが1であった場合、JKZD命令に続く命令のフェッチ、デコードなどが行われる。アドレスの生成は、この方法のデコード段階、読み出し段階、および実行段階の何れで行われてもよい。図2Aおよび図2Bは、プロセッサでJKZD命令を実行する他の実施形態を示す。101~105のいくつかがこの方法の開始される前に実行されていることが想定されており、手順の詳細を曖昧にすることを避けるべくそれらの工程は示されていない。201において、書き込みマスクに1の値があるかどうかの判断が行われる。書き込みマスクに1がある場合よって書き込みマスクがゼロでない場合、ジャンプは実行されず、203において、プログラムのフローにおける順番の命令が実行される。書き込みマスクに1がない場合、205において、一時的命令ポインタが生成される。いくつかの実施形態において、この一時的命令ポインタは現在の命令ポインタに符号拡張相対オフセットを加えたものである。例えば、32ビットの命令ポインタの場合、一時的命令ポインタの値は、EIPに符号拡張相対オフセットを加えたものである。この一時的命令ポインタはレジスタに格納されてもよい。207において、オペランドサイズ属性が16ビットであるかどうかの判断が行われる。例えば、命令ポインタが16、32、または64ビット値のいずれであるか。オペランドサイズ属性が16ビットである場合、209において、一時的命令ポインタの上位2バイトがクリアされるゼロに設定される。クリアはいくつかの異なるやり方で行われてよいが、いくつかの実施形態において、一時的命令ポインタは、0を最も重要な2バイトとして有し、1を最も重要性の低い2バイトとして有する即値例えば即値は、0x0000FFFFであるで論理積をとる。オペランドサイズが16ビットでない場合、211において、一時的命令ポインタがコードセグメントリミット内であるかどうかの判断が行われる。コードセグメントリミット内でない場合、213において、フォルトが生成され、ジャンプが実行されない。この判断は最も重要な2バイトがクリアされた一時的命令ポインタに関して行われてもよい。命令がファージャンプ他のコードセグメントへのジャンプをサポートしないいくつかの実施形態において、条件付きジャンプのターゲットが異なるセグメントにある場合、JKZD命令に関してテストされた条件とは反対の条件が用いられ、ターゲットは、他のセグメントへの無条件のファージャンプJMP命令によって到達される。ジャンプに制限がある実施形態において、プログラムがコードの遠い領域にジャンプしたい場合、writemask-on-jumpのセマンティックがネゲートされ、続くコードに、その特定のコードへのファージャンプを行わせる。例えばこの条件はイリーガルであり得る。JKZDFARLABELこのファージャンプを実行すべく、代わりに以下の2つの命令を用い得る。JKNZDBEYOND;JMPFARLABEL;BEYOND:一時的命令ポインタがコードセグメントリミット内である場合、213において、命令ポインタが一時的命令ポインタとして設定される。例えば、EIP値が一時的命令ポインタに設定される。215において、ジャンプが行われる。最後に、いくつかの実施形態において、当該方法の上述した態様のうち1以上が実行されないか、または異なる順序で実行される。例えば、プロセッサが16ビットのオペランド命令ポインタを有さない場合、対応する判断が行われない。表2は、表1と同じ擬似コードを示すが、JKNZD命令が用いられ、KORTESTDの必要性がない。以下の命令に関しても同様の利点がある。表2JKNZD-Jumpnearifthewritemaskisnotzero次に、jumpnearifthewritemaskisnotzeroJKNZD命令について説明する。プロセッサがこの命令を実行することにより、ソース書き込みマスクの全ての書き込みマスクビットが0に設定されているかどうか、当該ソース書き込みマスクの値が確認され、設定されていなければ、プロセッサに、宛て先オペランドおよび現在の命令ポインタによって少なくとも部分的に特定されるターゲット命令へのジャンプを実行させる。書き込みマスクビットの全てが0である場合よってジャンプ条件が満たされない場合、ジャンプは実行されず、JKNZD命令に続く命令の実行へと続く。JKNZDのターゲット命令のアドレスは典型的には、当該命令に含まれる相対オフセットオペランドEIPレジスタの命令ポインタの現在の値と相対的な符号付きオフセットによって特定される。相対オフセットrel8、rel16、またはrel32は一般的に、アセンブリコードのラベルとして特定されるが、機械コードレベルでは、命令ポインタへと加えられる、符号付きの8または32ビットの即値としてエンコードされ得る。典型的には、命令コーディングは-128から127のオフセットに関して最も効率的である。いくつかの実施形態において、オペランドサイズ命令ポインタが16ビットである場合、ターゲット命令アドレスを生成するのにEIPレジスタの上位2バイトは用いられないクリアされる。いくつかの実施形態において、64ビットのオペランドサイズの64ビットのモードにおいてRIPが命令ポインタを格納する、ジャンプニアのターゲット命令アドレスは、RIP=RIP64ビットに拡張された8ビットのオフセット符号として定義される。このモードにおいて、ジャンプニアのターゲットアドレスは、RIP=RIP64ビットに拡張された32ビットのオフセットとして定義される。この命令の例示的な形式はJKNZDk1,rel8/32である。ここでk1は書き込みマスクオペランド上記にて詳述したような16ビットレジスタなどであり、rel8/32は8または32ビットの即値である。いくつかの実施形態において、書き込みマスクは異なるサイズを有する8ビット、32ビットなど。JKNZDは命令のオペコードである。典型的には、各オペランドは命令において明示的に定義されている。他の実施形態において、即値は16ビットなど異なるサイズを有する。図3は、プロセッサでJKNZD命令を実行する方法の実施形態を示す。301において、書き込みマスクおよび相対オフセットを含むJKNZD命令がフェッチされる。303において、JKNZD命令がデコードされ、305において、書き込みマスクなどのソースオペランド値が読み出される。307において、デコードされたJKNZD命令が実行される。書き込みマスクの全てのビットがゼロの場合、相対オフセットおよび現在の命令ポインタに基づいて生成されたアドレスの命令へと条件付きジャンプが行われ、または、書き込みマスクの少なくとも1つのビットが1である場合、JKNZD命令に続く命令のフェッチ、デコードなどが行われる。アドレスの生成は、この方法のデコード段階、読み出し段階、および実行段階の何れで行われてもよい。図4は、プロセッサでJKNZD命令を実行する他の実施形態を示す。401~405のいくつかがこの方法の開始される前に実行されていることが想定されており、手順の詳細を曖昧にすることを避けるべくそれらの工程は示されていない。401において、書き込みマスクに1の値があるかどうかの判断が行われる。書き込みマスクに0のみがある場合よって書き込みマスクがゼロである場合、ジャンプは実行されず、403において、プログラムのフローにおける順番の命令が実行される。書き込みマスクに1がある場合、405において、一時的命令ポインタが生成される。いくつかの実施形態において、この一時的命令ポインタは現在の命令ポインタに符号拡張相対オフセットを加えたものである。例えば、32ビットの命令ポインタの場合、一時的命令ポインタの値は、EIPに符号拡張相対オフセットを加えたものである。この一時的命令ポインタはレジスタに格納されてもよい。407において、オペランドサイズ属性が16ビットであるかどうかの判断が行われる。例えば、命令ポインタが16、32、または64ビット値のいずれであるか。オペランドサイズ属性が16ビットである場合、409において、一時的命令ポインタの上位2バイトがクリアされるゼロに設定される。クリアはいくつかの異なるやり方で行われてよいが、いくつかの実施形態において、一時的命令ポインタは、0を最も重要な2バイトとして有し、1を最も重要性の低い2バイトとして有する即値例えば即値は、0x0000FFFFであるで論理積をとる。オペランドサイズが16ビットでない場合、411において、一時的命令ポインタがコードセグメントリミット内であるかどうかの判断が行われる。コードセグメントリミット内でない場合、413において、フォルトが生成され、ジャンプが実行されない。この判断は最も重要な2バイトがクリアされた一時的命令ポインタに関して行われてもよい。命令がファージャンプ他のコードセグメントへのジャンプをサポートしないいくつかの実施形態において、条件付きジャンプのターゲットが異なるセグメントにある場合、JKNZD命令に関してテストされた条件とは反対の条件が用いられ、ターゲットは、他のセグメントへの無条件のファージャンプJMP命令によって到達される。例えばこの条件はイリーガルであり得る。JKNZDFARLABELこのファージャンプを実行すべく、代わりに以下の2つの命令を用い得る。JKZDBEYOND;JMPFARLABEL;BEYOND:一時的命令ポインタがコードセグメントリミット内である場合、413において、命令ポインタが一時的命令ポインタとして設定される。例えば、EIP値が一時的命令ポインタに設定される。415において、ジャンプが行われる。最後に、いくつかの実施形態において、当該方法の上述した態様のうち1以上が実行されないか、または異なる順序で実行される。例えば、プロセッサが16ビットのオペランド命令ポインタを有さない場合、対応する判断が行われない。JKOD-Jumpnearifthewritemaskisallones次に、jumpnearifthewritemaskisallonesJKOD命令について説明する。プロセッサがこの命令を実行することにより、ソース書き込みマスクの全ての書き込みマスクビットが1に設定されているかどうか、当該ソース書き込みマスクの値が確認され、設定されていれば、プロセッサに、宛て先オペランドおよび現在の命令ポインタによって少なくとも部分的に特定されるターゲット命令へのジャンプを実行させる。書き込みマスクビットの全てが1でない場合よってジャンプ条件が満たされない場合、ジャンプは実行されず、JKOD命令に続く命令の実行へと続く。JKODのターゲット命令のアドレスは典型的には、当該命令に含まれる相対オフセットオペランドEIPレジスタの命令ポインタの現在の値と相対的な符号付きオフセットによって特定される。相対オフセットrel8、rel16、またはrel32は一般的に、アセンブリコードのラベルとして特定されるが、機械コードレベルでは、命令ポインタへと加えられる、符号付きの8または32ビットの即値としてエンコードされ得る。典型的には、命令コーディングは-128から127のオフセットに関して最も効率的である。いくつかの実施形態において、オペランドサイズ命令ポインタが16ビットである場合、ターゲット命令アドレスを生成するのにEIPレジスタの上位2バイトは用いられないクリアされる。いくつかの実施形態において、64ビットのオペランドサイズの64ビットのモードにおいてRIPが命令ポインタを格納する、ジャンプニアのターゲット命令アドレスは、RIP=RIP64ビットに拡張された8ビットのオフセット符号として定義される。このモードにおいて、ジャンプニアのターゲットアドレスは、RIP=RIP64ビットに拡張された32ビットのオフセットとして定義される。この命令の例示的な形式はJKODk1,rel8/32である。ここでk1は書き込みマスクオペランド上記にて詳述したような16ビットレジスタなどであり、rel8/32は8または32ビットの即値である。いくつかの実施形態において、書き込みマスクは異なるサイズを有する8ビット、32ビットなど。JKODは命令のオペコードである。典型的には、各オペランドは命令において明示的に定義されている。他の実施形態において、即値は16ビットなど異なるサイズを有する。図5は、プロセッサでJKOD命令を実行する方法の実施形態を示す。501において、書き込みマスクおよび相対オフセットを含むJKOD命令がフェッチされる。503において、JKOD命令がデコードされ、505において、書き込みマスクなどのソースオペランド値が読み出される。507において、デコードされたJKOD命令が実行される。書き込みマスクの全てのビットが1の場合、相対オフセットおよび現在の命令ポインタに基づいて生成されたアドレスの命令へと条件付きジャンプが行われ、または、書き込みマスクの少なくとも1つのビットが0である場合、JKOD命令に続く命令のフェッチ、デコードなどが行われる。アドレスの生成は、この方法のデコード段階、読み出し段階、および実行段階の何れで行われてもよい。図6は、プロセッサでJKOD命令を実行する他の実施形態を示す。601~605のいくつかがこの方法の開始される前に実行されていることが想定されており、手順の詳細を曖昧にすることを避けるべくそれらの工程は示されていない。601において、書き込みマスクに0の値があるかどうかの判断が行われる。書き込みマスクに0がある場合よって書き込みマスクの全てが1ではない場合、ジャンプは実行されず、603において、プログラムのフローにおける順番の命令が実行される。書き込みマスクに0がない場合、605において、一時的命令ポインタが生成される。いくつかの実施形態において、この一時的命令ポインタは現在の命令ポインタに符号拡張相対オフセットを加えたものである。例えば、32ビットの命令ポインタの場合、一時的命令ポインタの値は、EIPに符号拡張相対オフセットを加えたものである。この一時的命令ポインタはレジスタに格納されてもよい。607において、オペランドサイズ属性が16ビットであるかどうかの判断が行われる。例えば、命令ポインタが16、32、または64ビット値のいずれであるか。オペランドサイズ属性が16ビットである場合、609において、一時的命令ポインタの上位2バイトがクリアされるゼロに設定される。クリアはいくつかの異なるやり方で行われてよいが、いくつかの実施形態において、一時的命令ポインタは、0を最も重要な2バイトとして有し、1を最も重要性の低い2バイトとして有する即値例えば即値は、0x0000FFFFであるで論理積をとる。オペランドサイズが16ビットでない場合、611において、一時的命令ポインタがコードセグメントリミット内であるかどうかの判断が行われる。コードセグメントリミット内でない場合、613において、フォルトが生成され、ジャンプが実行されない。この判断は最も重要な2バイトがクリアされた一時的命令ポインタに関して行われてもよい。一時的命令ポインタがコードセグメントリミット内である場合、613において、命令ポインタが一時的命令ポインタとして設定される。例えば、EIP値が一時的命令ポインタに設定される。615において、ジャンプが行われる。最後に、いくつかの実施形態において、当該方法の上述した態様のうち1以上が実行されないか、または異なる順序で実行される。例えば、プロセッサが16ビットのオペランド命令ポインタを有さない場合、対応する判断が行われない。JKNOD-Jumpnearifthewritemaskisnotallones次に、jumpnearifthewritemaskisnotallonesJKNOD命令について説明する。プロセッサがこの命令を実行することにより、ソース書き込みマスクの少なくとも1つの書き込みマスクビットが0に設定されているかどうか、当該ソース書き込みマスクの値が確認され、設定されていれば、プロセッサに、宛て先オペランドおよび現在の命令ポインタによって少なくとも部分的に特定されるターゲット命令へのジャンプを実行させる。書き込みマスクビットのうち1つも0でない場合よってジャンプ条件が満たされない場合、ジャンプは実行されず、JKNOD命令に続く命令の実行へと続く。JKNODのターゲット命令のアドレスは典型的には、当該命令に含まれる相対オフセットオペランドEIPレジスタの命令ポインタの現在の値と相対的な符号付きオフセットによって特定される。相対オフセットrel8、rel16、またはrel32は一般的に、アセンブリコードのラベルとして特定されるが、機械コードレベルでは、命令ポインタへと加えられる、符号付きの8または32ビットの即値としてエンコードされ得る。典型的には、命令コーディングは-128から127のオフセットに関して最も効率的である。いくつかの実施形態において、オペランドサイズ命令ポインタが16ビットである場合、ターゲット命令アドレスを生成するのにEIPレジスタの上位2バイトは用いられないクリアされる。いくつかの実施形態において、64ビットのオペランドサイズの64ビットのモードにおいてRIPが命令ポインタを格納する、ジャンプニアのターゲット命令アドレスは、RIP=RIP64ビットに拡張された8ビットのオフセット符号として定義される。このモードにおいて、ジャンプニアのターゲットアドレスは、RIP=RIP64ビットに拡張された32ビットのオフセットとして定義される。この命令の例示的な形式はJKNODk1,rel8/32である。ここでk1は書き込みマスクオペランド上記にて詳述したような16ビットレジスタなどであり、rel8/32は8または32ビットの即値である。いくつかの実施形態において、書き込みマスクは異なるサイズを有する8ビット、32ビットなど。JKNODは命令のオペコードである。典型的には、各オペランドは命令において明示的に定義されている。他の実施形態において、即値は16ビットなど異なるサイズを有する。図7は、プロセッサでJKNOD命令を実行する方法の実施形態を示す。701において、書き込みマスクおよび相対オフセットを含むJKNOD命令がフェッチされる。703において、JKNOD命令がデコードされ、705において書き込みマスクなどのソースオペランド値が読み出される。707において、デコードされたJKNOD命令が実行される。書き込みマスクの少なくとも1つのビットが1でない場合、相対オフセットおよび現在の命令ポインタに基づいて生成されたアドレスの命令へと条件付きジャンプが行われ、または、書き込みマスクの全てのビットが1である場合、JKNZD命令に続く命令のフェッチ、デコードなどが行われる。アドレスの生成は、この方法のデコード段階、読み出し段階、および実行段階の何れで行われてもよい。図8は、プロセッサでJKNOD命令を実行する他の実施形態を示す。801~805のいくつかがこの方法の開始される前に実行されていることが想定されており、手順の詳細を曖昧にすることを避けるべくそれらの工程は示されていない。801において、書き込みマスクに0の値があるかどうかの判断が行われる。書き込みマスクに0がない場合よって書き込みマスクが全て1である場合、ジャンプは実行されず、803において、プログラムのフローにおける順番の命令が実行される。書き込みマスクに0がある場合、805において、一時的命令ポインタが生成される。いくつかの実施形態において、この一時的命令ポインタは現在の命令ポインタに符号拡張相対オフセットを加えたものである。例えば、32ビットの命令ポインタの場合、一時的命令ポインタの値は、EIPに符号拡張相対オフセットを加えたものである。この一時的命令ポインタはレジスタに格納されてもよい。807において、オペランドサイズ属性が16ビットであるかどうかの判断が行われる。例えば、命令ポインタが16、32、または64ビット値のいずれであるか。オペランドサイズ属性が16ビットである場合、809において、一時的命令ポインタの上位2バイトがクリアされるゼロに設定される。クリアはいくつかの異なるやり方で行われてよいが、いくつかの実施形態において、一時的命令ポインタは、0を最も重要な2バイトとして有し、1を最も重要性の低い2バイトとして有する即値例えば即値は、0x0000FFFFであるで論理積をとる。オペランドサイズが16ビットでない場合、811において、一時的命令ポインタがコードセグメントリミット内であるかどうかの判断が行われる。コードセグメントリミット内でない場合、813において、フォルトが生成され、ジャンプが実行されない。この判断は最も重要な2バイトがクリアされた一時的命令ポインタに関して行われてもよい。一時的命令ポインタがコードセグメントリミット内である場合、813において、命令ポインタが一時的命令ポインタとして設定される。例えば、EIP値が一時的命令ポインタに設定される。815において、ジャンプが行われる。最後に、いくつかの実施形態において、当該方法の上述した態様のうち1以上が実行されないか、または異なる順序で実行される。例えば、プロセッサが16ビットのオペランド命令ポインタを有さない場合、対応する判断が行われない。上記にて詳述した命令の実施形態は、下記に詳述する汎用のベクトルフレンドリーな命令形式で実施することも可能である。他の実施形態において、そのような形式は用いられず、他の命令形式が用いられる。しかし、書き込みマスクレジスタ、様々なデータ変換スウィズル、ブロードキャストなど、アドレシングなどに関する以下の説明は一般的に、上述した命令の実施形態の説明に関して適用可能である。加えて、例示的なシステム、アーキテクチャ、およびパイプラインについて以下で詳述する。上述した命令の実施形態は、そのようなシステム、アーキテクチャ、およびパイプラインで実行することが出来るが、それら詳述されるものに限定されない。ベクトルフレンドリーな命令形式は、ベクトル命令に適した命令形式例えば、ベクトル動作に特定のいくつかのフィールドがあるである。ベクトルフレンドリーな命令形式によってベクトル演算およびスカラ演算の両方がサポートされる実施形態を説明するが、代替的な実施形態においては、ベクトルフレンドリーな命令形式のベクトル演算のみが用いられる。例示的な汎用のベクトルフレンドリーな命令形式-図9Aおよび図9B図9Aおよび図9Bは、本願発明の実施形態に係る、汎用のベクトルフレンドリーな命令形式、および、その命令テンプレートを示すブロック図である。図9Aは、本願発明の実施形態に係る、汎用のベクトルフレンドリーな命令形式、および、そのクラスAの命令テンプレートを示すブロック図である。図9Bは、本願発明の実施形態に係る、汎用のベクトルフレンドリーな命令形式、および、そのクラスB命令テンプレートを示すブロック図である。詳細には、汎用のベクトルフレンドリーな命令形式900には、それぞれが非メモリアクセス905命令テンプレートおよびメモリアクセス920命令テンプレートを含む、クラスAおよびクラスB命令テンプレートが定義されている。ベクトルフレンドリーな命令形式という表現において汎用という用語は、命令形式が何ら特定の命令セットに関連付けられていないことを意味する。ベクトルフレンドリーな命令形式の命令が、レジスタ非メモリアクセス905命令テンプレートおよびレジスタ/メモリメモリアクセス920命令テンプレートのうちいずれかをソースとするベクトルに対して動作する実施形態を説明するが、本願発明の代替的な実施形態においては、これらのうちいずれか一方だけをサポートしてもよい。また、ベクトル命令形式のロード命令および格納命令がある本願発明の実施形態を説明するが、代替的な実施形態においては、代わりに、或いは、加えて、レジスタへ、またはレジスタからベクトル例えば、メモリからレジスタへ、レジスタからメモリへ、レジスタ間で、などを移動させる異なる命令形式の命令が用いられる。さらに、2つのクラスの命令テンプレートをサポートする本願発明の実施形態を説明するが、代替的な実施形態においては、これらのうち一方のみ、または3つ以上がサポートされる。ベクトルフレンドリーな命令形式が、32ビット4バイト、または、64ビット8バイトのデータ要素幅またはサイズを有する64バイトベクトルオペランドの長さまたはサイズよって、64バイトのベクトルは、16倍長語サイズの要素、および8カッド語サイズの要素のいずれかからなる、16ビット2バイト、または、8ビット1バイトのデータ要素幅またはサイズを有する64バイトベクトルオペランドの長さまたはサイズ、32ビット4バイト、64ビット8バイト、16ビット2バイト、または、8ビット1バイトのデータ要素幅またはサイズを有する32バイトベクトルオペランドの長さまたはサイズ、並びに、32ビット4バイト、64ビット8バイト、16ビット2バイト、または、8ビット1バイトのデータ要素幅またはサイズを有する16バイトベクトルオペランドの長さまたはサイズをサポートする実施形態について説明するが、代替的な実施形態においては、より大きな、より小さな、または異なるデータ要素幅例えば、128ビット16バイトデータ要素幅を有するより大きな、より小さな、および/または異なるベクトルオペランドサイズ例えば956バイトのベクトルオペランドがサポートされてもよい。図9AのクラスAの命令テンプレートは、1非メモリアクセス905命令テンプレート内に、非メモリアクセス完全丸め制御タイプ演算910命令テンプレート、および非メモリアクセスデータ変換タイプ演算915命令テンプレート、並びに2メモリアクセス920命令テンプレート内に、メモリアクセス一時的925命令テンプレート、およびメモリアクセス非一時的930命令テンプレートを含む。図9BのクラスB命令テンプレートは、1非メモリアクセス905命令テンプレート内に、非メモリアクセス書き込みマスク制御部分的丸め制御タイプ演算912命令テンプレート、および非メモリアクセス書き込みマスク制御vsizeタイプ演算917命令テンプレート、並びに、2メモリアクセス920命令テンプレート内に、メモリアクセス書き込みマスク制御927命令テンプレートを含む。形式汎用のベクトルフレンドリーな命令形式900は、図9Aおよび図9Bに示される順序で、以下に列挙するフィールドを含む。形式フィールド940-このフィールド内の特定値命令形式識別値は一意的に、ベクトルフレンドリーな命令形式を識別し、よって、命令ストリーム内のベクトルフレンドリーな命令形式の命令の発生を識別する。よって、形式フィールド940のコンテンツは、第1命令形式の命令の発生を他の命令形式の命令の発生と区別し、これにより、ベクトルフレンドリーな命令形式を他の命令形式の命令セットへ導入することが可能となる。このため、このフィールドは、汎用のベクトルフレンドリーな命令形式のみを有する命令には必要でないので任意的なものである。ベース動作フィールド942-このコンテンツは、複数の異なるベース動作を区別する。本明細書で以下に説明するように、ベース動作フィールド942は、オペコードフィールドを含む、および/または、その一部であってもよい。レジスタインデックスフィールド944-このコンテンツは、直接的またはアドレス生成を介して、レジスタまたはメモリなどの、ソースおよび宛て先オペランドの位置を特定する。これらには、PxQ例えば32x1112レジスタファイルからN個のレジスタを選択するのに十分な数のビットを含む。一実施形態において、Nは3つのソースおよび1つの宛て先レジスタであるが、代替的な実施形態においては、より多く、またはより少ない宛て先レジスタをサポートしてもよい例えば最大2つのソースをサポートしてもよく、これらソースのうち1つは宛て先としても動作する。例えば最大3つのソースをサポートしてもよく、これらソースのうち1つは宛て先としても動作する。例えば2つのソースおよび1つの宛て先をサポートしてもよい。一実施形態においてはP=32であるが、代替的な実施形態においては、より多く、またはより少ないレジスタ例えば16のをサポートしてもよい。一実施形態においてはQ=1112ビットであるが、代替的な実施形態においては、より多く、またはより少ないビット例えば128、1024のをサポートしてもよい。修飾子フィールド946-このコンテンツは、メモリアクセスを特定する汎用ベクトル命令形式の命令の発生を、メモリアクセスを特定しない命令形式の命令の発生と区別する。つまり、非メモリアクセス905命令テンプレートとメモリアクセス920命令テンプレートとを区別する。メモリアクセス動作は、メモリ階層から読み出す、および/または、メモリ階層へ書き込む場合によっては、レジスタ内の値を用いて、ソース、および/または宛て先アドレスを特定する。他方、メモリアクセス動作はこれらを特定しない例えば、ソースおよび宛て先がレジスタである。一実施形態においては、このフィールドはメモリアドレス計算を実行する3つの異なる方法からの選択も行うが、代替的な実施形態においては、メモリアドレス計算を実行するより多くの、より少ない、または複数の異なる方法をサポートする。オーグメンテーション動作フィールド950-このコンテンツは、ベース動作に加えて、様々な複数の異なる動作のうち何れを実行するかを区別する。このフィールドはコンテキスト特有のものである。本願発明の一実施形態において、このフィールドは、クラスフィールド968、アルファフィールド952、および、ベータフィールド954に分けられる。オーグメンテーション動作フィールドは、複数の動作からなる共通のグループを、2、3、または4つの命令ではなく1つの命令で実行することを可能とする。以下に示すのは、必要な命令の数を減らすべくオーグメンテーションフィールド950を用いる命令用いられる用語の意味は、本明細書において以下により詳細に説明するのいくつかの例である。ここで、[rax]はアドレス生成に用いられるベースポインタであり、{}は、データ操作フィールド本明細書で以下により詳細に説明するで特定される変換動作を示す。スケールフィールド960-このコンテンツは、メモリアドレスの生成のための例えば、2スケールインデックスベースを用いるアドレス生成のためのインデックスフィールドのコンテンツのスケーリングを可能とする。変位フィールド962A-このコンテンツは、メモリアドレスの生成例えば、2スケールインデックスベース変位を用いるアドレス生成の一部として用いられる。変位係数フィールド962Bいずれか一方のみが用いられるので、変位フィールド962Aは変位係数フィールド962Bの直接上に配置されている-このコンテンツは、アドレス生成の一部として用いられる。このフィールドは、メモリアクセスNのサイズでスケーリングされる変位係数を特定する。ここでNは、メモリアクセス例えば、2スケールインデックスベーススケーリングされた変位を用いるアドレス生成のためののバイト数である。冗長下位ビットは無視され、よって、有効アドレスを計算するのに用いられる最終的な変位を生成すべく変位係数フィールドのコンテンツがメモリオペランドの合計サイズNで乗算される。Nの値は、本明細書で以下に説明するようにフルオペコードフィールド974本明細書で以下に説明するおよびデータ操作フィールド954Cに基づいて実行時にプロセッサハードウェアによって求められる。変位フィールド962Aおよび変位係数フィールド962Bは非メモリアクセス905命令テンプレートには用いられない、並びに/或いは、異なる実施形態においては、いずれか一方が用いられる、または両方とも用いられないので、任意的なものである。データ要素幅フィールド964-このコンテンツは、複数のデータ要素幅のうち何れを用いるかを区別するいくつかの実施形態においては全ての命令に関して。他の実施形態においては、命令のうちいくつかに関して。1つだけのデータ要素幅がサポートされる場合、および/または、オペコードのいくつかの態様を用いて複数のデータ要素幅がサポートされる場合には必要ではないので、このフィールドは任意的なものである。書き込みマスクフィールド970-このコンテンツは、データ要素の位置毎に、宛て先ベクトルオペランドのデータ要素の位置に、ベース動作およびオーグメンテーション動作の結果を反映させるかどうかを制御する。クラスA命令テンプレートはマージング-書き込みマスキングをサポートし、クラスB命令テンプレートは、マージング-書き込みマスキング、およびゼロ化-書き込みマスキングの両方をサポートする。マージングの際、ベクトルマスクにより、宛て先の複数の要素からなる何れのセットも、ベース動作およびオーグメンテーション動作によって特定されるいかなる動作の実行の間であっても、更新から保護をすることが可能となる。他の一実施形態において、対応するマスクのビットが有する0を有する宛て先の各要素の古い値が維持される。対照的に、ベクトルマスクをゼロ化する際、ベース動作およびオーグメンテーション動作によって特定されるいかなる動作の実行の間であっても、宛て先の複数の要素からなる何れのセットもゼロにされる。一実施形態において、対応するマスクのビットが0の値を有する宛て先の要素が0に設定される。この機能のサブセットは、実行されている動作のベクトル長さを制御する能力であるつまり、最初から最後までの、修飾されている要素のスパン。しかし、修飾される要素が連続している必要はない。よって、書き込みマスクフィールド970は、ロード、格納、アリズマティック、ロジカルなどを含む部分的なベクトル動作を可能とする。また、このマスキングをフォルトの抑制に用いることも出来るつまり、フォルトを引き起こし得る/引き起こす何らかの動作の結果の受信を避けるべく宛て先のデータ要素の位置をマスキングすることにより。例えば、メモリのベクトルがページの境界をクロスし、2番目のページではなく最初のページがページフォルトを引き起こすことを想定すると、最初のページにあるベクトルの全てのデータ要素が書き込みマスクによりマスキングされた場合、ページフォルトを無視することが出来る。さらに、書き込みマスクは、特定のタイプの条件ステートメントを含むベクトル化ループを可能とする。書き込みマスクフィールド970のコンテンツが、用いられる書き込みマスクを含む複数の書き込みマスクレジスタのうちの1つを選択するよって、書き込みマスクフィールド970のコンテンツが、実行されるマスキングを間接的に識別する本願発明の実施形態を説明したが、代替的な実施形態においては、代替的または追加的に、書き込みマスクフィールド970のコンテンツが、実行されるマスキングを直接的に特定することを可能とする。さらに、1レジスタリネームパイプライン段階において宛て先は明示的なソースではないので、宛て先オペランドがソースでもない命令ノンターナリ命令とも呼ばれるに対してレジスタリネーミングが用いられる動作の結果でない何れかデータ要素何れのマスキングされたデータ要素もゼロにされるので、現在の宛て先レジスタからのデータ要素の何れもリネームされた宛て先レジスタにコピーされる必要がなく、或いは、何らかの方法で動作を実行される必要がない場合、および、2ゼロが書き込まれているので、書き戻し段階の間、ゼロ化により性能の向上が可能となる。即値フィールド972-このコンテンツは即値の特定を可能とする。即値をサポートしない汎用のベクトルフレンドリーな形式の実施では存在せず、即値を用いない命令では存在しないので、このフィールドは任意的なものである。命令テンプレートクラス選択クラスフィールド968-このコンテンツは複数の異なるクラスの命令を区別する。図2Aおよび図2Bを参照すると、このフィールドのコンテンツは、クラスAの命令およびクラスBの命令のうちから選択する。図9Aおよび図9Bにおいて、角が丸められた正方形は、特定値がフィールド内に存在することを示すのに用いられている例えば、図9AのクラスA968A、および図9BのクラスB968B。クラスAの非メモリアクセス命令テンプレートクラスAの非メモリアクセス905命令テンプレートの場合、アルファフィールド952は、含まれるコンテンツが複数の異なるオーグメンテーション動作タイプのうち何れが実行されるかを区別する例えば、丸め952A.1およびデータ変換952A.2がそれぞれ、非メモリアクセス丸めタイプ演算910および非メモリアクセスデータ変換タイプ演算915命令テンプレートに関して特定されるRSフィールド952Aとして解釈され、ベータフィールド954は、特定されたタイプの動作のうち何れが実行されるかを区別する。図9Aおよび図9Bにおいて、角が丸められたブロックは、特定値が存在することを示すのに用いられている例えば、修飾子フィールド946の非メモリアクセス946A、アルファフィールド952/RSフィールド952Aの丸め952A.1およびデータ変換952A.2。非メモリアクセス905命令テンプレートにおいて、スケールフィールド960、変位フィールド962A、および変位スケールフィールド962Bは存在しない。非メモリアクセス命令テンプレート-完全丸め制御タイプ演算非メモリアクセス完全丸め制御タイプ演算910命令テンプレートにおいて、ベータフィールド954は、含まれるコンテンツが静的な丸めを提供する丸め制御フィールド954Aとして解釈される。本願発明の説明される実施形態においては、丸め制御フィールド954Aは全浮動小数点例外抑制SAEフィールド956、および、丸め演算制御フィールド958を含むが、代替的な実施形態においては、これらのコンセプトの両方を同じフィールドにエンコードする、または、これらのコンセプト/フィールドのうち一方、または他方のみを有する例えば、丸め演算制御フィールド958のみを有する。SAEフィールド956-このコンテンツは、例外イベント報告を無効化するかどうかを区別する。抑制が有効であることをSAEフィールド956のコンテンツが示す場合、任意の命令はあらゆるタイプの浮動小数点例外フラグを報告せず、浮動小数点例外ハンドラを立ち上げない。丸め演算制御フィールド958-このコンテンツは、複数の丸め演算例えば、端数切り上げ、端数切り捨て、ゼロに丸め、および最も近い値に丸めからなるグループのうち何れを実行するかを区別する。よって、丸め演算制御フィールド958は、命令毎に丸めモードを変更することを可能とし、よって、このようなことが必要である場合に特に有用である。丸めモードを特定するための制御レジスタをプロセッサが含む本願発明の一実施形態において、丸め演算制御フィールド950のコンテンツは、レジスタ値よりも優位であるそのような制御レジスタに対し格納-変更-復元を実行する必要なく丸めモードを選択出来るということは有利である。非メモリアクセス命令テンプレート-データ変換タイプ演算非メモリアクセスデータ変換タイプ演算915命令テンプレートにおいて、ベータフィールド954は、複数のデータ変換例えば、データ変換、スウィズル、ブロードキャストのうち何れが実行されるかを含まれるコンテンツが区別するデータ変換フィールド954Bとして解釈される。クラスAのメモリアクセス命令テンプレートクラスAのメモリアクセス920命令テンプレートの場合、アルファフィールド952は、含まれるコンテンツが削除ヒントのうちいずれが用いられるかを区別する図9Aにおいて、一時的952B.1および非一時的952B.2がそれぞれ、メモリアクセス一時的925命令テンプレートおよびメモリアクセス非一時的930命令テンプレートに関して特定される削除ヒントフィールド952Bとして解釈され、ベータフィールド954は、含まれるコンテンツが複数のデータ操作動作プリミティブとしても知られるのうちいずれが実行されるか例えば、操作なし、ブロードキャスト、ソースのアップコンバート、および宛て先のダウンコンバートを区別するデータ操作フィールド954Cとして解釈される。メモリアクセス920命令テンプレートは、スケールフィールド960を含み、場合によっては、変位フィールド962Aまたは変位スケールフィールド962Bを含む。ベクトルメモリ命令は、変換のサポートと共に、メモリからのベクトルロード、およびメモリへのベクトル格納を実行する。通常のベクトル命令と同様に、ベクトルメモリ命令は、データ要素の点で、書き込みマスクとして選択されたベクトルマスクのコンテンツによって指示されて実際に転送される要素と共に、メモリから、またはメモリへデータを転送する。図9Aにおいて、角が丸められた正方形は、フィールド内に特定値が存在することを示すのに用いられている例えば、修飾子フィールド946のメモリアクセス946B、アルファフィールド952/削除ヒントフィールド952Bの一時的952B.1、および非一時的952B.2。メモリアクセス命令テンプレート-一時的一時的データは、キャッシュするのが有利である程度に直ぐに再度用いられる可能性が高いデータである。しかし、これはヒントであり、複数の異なるプロセッサが、ヒントを全く無視するなど複数の異なるやり方で実行し得る。メモリアクセス命令テンプレート-非一時的非一時的データは、第1レベルキャッシュでキャッシュするのが有利ではない程度に直ぐには再度用いられる可能性が低く、削除の高い優先度を与えられるべきデータである。しかし、これはヒントであり、複数の異なるプロセッサが、ヒントを全く無視するなど複数の異なるやり方で実行し得る。クラスB命令テンプレートクラスB命令テンプレートの場合、アルファフィールド952は、書き込みマスクフィールド970により制御される書き込みマスキングがマージングであるかゼロ化であるかを含まれるコンテンツが区別する書き込みマスク制御Zフィールド952Cとして解釈される。クラスBの非メモリアクセス命令テンプレートクラスBの非メモリアクセス905命令テンプレートの場合、ベータフィールド954の一部は、含まれるコンテンツが複数の異なるオーグメンテーション動作タイプのうちいずれが実行されるのかを区別する例えば、丸め957A.1およびベクトル長さVSIZE957A.2がそれぞれ、非メモリアクセス書き込みマスク制御部分的丸め制御タイプ演算912命令テンプレート、および非メモリアクセス書き込みマスク制御VSIZEタイプ演算917命令テンプレートに関して特定されるRLフィールド957Aとして解釈され、ベータフィールド954の残りは、特定されたタイプの動作のうちいずれが実行されるのかを区別する。図9Aおよび9Bにおいて、角が丸められたブロックは、特定値例えば、修飾子フィールド946の非メモリアクセス946A、RLフィールド957Aの丸め957A.1およびVSIZE957A.2が存在することを示すのに用いられている。非メモリアクセス905命令テンプレートにおいて、スケールフィールド960、変位フィールド962A、および、変位スケールフィールド962Bは存在しない。非メモリアクセス命令テンプレート-書き込みマスク制御部分的丸め制御タイプ演算非メモリアクセス書き込みマスク制御部分的丸め制御タイプ演算910命令テンプレートにおいて、ベータフィールド954の残りは、丸め演算フィールド959Aとして解釈され、例外イベント報告が無効化される任意の命令はあらゆるタイプの浮動小数点例外フラグを報告せず、浮動小数点例外ハンドラを立ち上げない。丸め演算制御フィールド959A-丸め演算制御フィールド958とちょうど同じようにこのコンテンツは、複数の丸め演算例えば、端数切り上げ、端数切り捨て、ゼロに丸め、および最も近い値に丸めからなるグループのうち何れを実行するかを区別する。よって、丸め演算制御フィールド959Aは、命令毎に丸めモードを変更することを可能とし、よって、このようなことが必要である場合に特に有用である。丸めモードを特定するための制御レジスタをプロセッサが含む本願発明の一実施形態において、丸め演算制御フィールド950のコンテンツは、レジスタ値よりも優位であるそのような制御レジスタに対し格納-変更-復元を実行する必要なく丸めモードを選択出来るということは有利である。非メモリアクセス命令テンプレート-書き込みマスク制御VSIZEタイプ演算非メモリアクセス書き込みマスク制御VSIZEタイプ演算917命令テンプレートにおいて、ベータフィールド954の残りは、複数のデータベクトル長さ例えば、128、956、または1112バイトのうち何れで実行されるかを含まれるコンテンツが区別するベクトル長さフィールド959Bとして解釈される。クラスBのメモリアクセス命令テンプレートクラスAのメモリアクセス920命令テンプレートの場合、ベータフィールド954の一部は、ブロードキャストタイプデータ操作が実行されるかどうかを含まれるコンテンツが区別するブロードキャストフィールド957Bとして解釈され、ベータフィールド954の残りは、ベクトル長さフィールド959Bとして解釈される。メモリアクセス920命令テンプレートは、スケールフィールド960を含み、場合によっては、変位フィールド962Aまたは変位スケールフィールド962Bを含む。フィールドについての追加の説明汎用のベクトルフレンドリーな命令形式900に関し、フルオペコードフィールド974は、形式フィールド940、ベース動作フィールド942、およびデータ要素幅フィールド964を含むものとして示した。フルオペコードフィールド974がこれらのフィールド全てを含む一実施形態を示したが、これらのフィールド全てをサポートしない実施形態においては、フルオペコードフィールド974はこれらのフィールドの全ては含まない。フルオペコードフィールド974は演算コードを提供する。オーグメンテーション動作フィールド950、データ要素幅フィールド964、および書き込みマスクフィールド970は、汎用のベクトルフレンドリーな命令形式で、命令毎にこれらの特徴全てを特定することを可能とする。書き込マスクフィールドおよびデータ要素幅フィールドを組み合わせると、複数の異なるデータ要素幅に基づいたマスクの適用を可能とするタイプ化された命令が生成される。当該命令形式は、他のフィールドのコンテンツに基づいて異なる目的のために異なるフィールドを再利用するので、必要なビット数が比較的少なくて済む。例えば、一つの見方としては、修飾子フィールドのコンテンツが、図9Aおよび図9Bの非メモリアクセス905命令テンプレートと、図9Aおよび図9Bのメモリアクセス9250命令テンプレートとの間で選択と行い、クラスフィールド968のコンテンツが、それら非メモリアクセス905命令テンプレートのうち、図9Aの命令テンプレート910/915、および、図9Bの命令テンプレート912/917から選択を行い、クラスフィールド968のコンテンツが、それらメモリアクセス920命令テンプレートのうち、図9Aの命令テンプレート925/930、および、図9Bの命令テンプレート927から選択を行う。他の見方では、クラスフィールド968のコンテンツが、図9Aおよび図9BのうちそれぞれのクラスAおよびクラスB命令テンプレートから選択を行い、修飾子フィールドのコンテンツが、それらクラスAの命令テンプレートのうち、図9Aの命令テンプレート905、920から選択を行い、修飾子フィールドのコンテンツが、それらクラスB命令テンプレートのうち、図9Bの命令テンプレート905、920から選択を行う。クラスフィールドのコンテンツがクラスAの命令テンプレートを示す場合、修飾子フィールド946のコンテンツが、アルファフィールド952RSフィールド952AおよびEHフィールド952Bの解釈を選択する。同様に、修飾子フィールド946およびクラスフィールド968のコンテンツが、アルファフィールドがRSフィールド952A、EHフィールド952B、または書き込みマスク制御Zフィールド952Cとして解釈されるかの選択を行う。クラスフィールドおよび修飾子フィールドがクラスAのメモリアクセス動作を示す場合、オーグメンテーションフィールドのベータフィールドの解釈は、RSフィールドのコンテンツに基づいて変化し、クラスフィールドおよび修飾子フィールドがクラスBの非メモリアクセス動作を示す場合には、ベータフィールドの解釈は、RLフィールドのコンテンツに依存する。クラスフィールドおよび修飾子フィールドがクラスAのメモリアクセス動作を示す場合には、オーグメンテーションフィールドのベータフィールドの解釈は、ベース動作フィールドのコンテンツに基づいて変化し、クラスフィールドおよび修飾子フィールドがクラスBのメモリアクセス動作を示す場合には、オーグメンテーションフィールドのベータフィールドのブロードキャストフィールド957Bの解釈は、ベース動作フィールドのコンテンツに基づいて変化する。よって、ベース動作フィールド、修飾子フィールド、および、オーグメンテーション動作フィールドの組み合わせにより、さらに幅広いタイプのオーグメンテーション動作を特定することが可能となる。複数の異なる状況において、クラスAおよびクラスBに関し様々な命令テンプレートを用いるのが有益である。クラスAは、性能上の理由によりゼロ化-書き込みマスキング、または、より短いベクトル長さが所望される場合に有用である。例えば、ゼロ化により、人工的に宛て先とマージングを行う必要がなくリネームが用いられる場合に偽の依存性を避けることが可能となる。他の例として、ベクトル長さの制御は、ベクトルマスクを用いてより短いベクトルサイズをエミュレートする際に格納-ロード転送に関する課題を緩和する。クラスBは、1浮動小数点の例外を可能としつまり、SAEフィールドのコンテンツがNoを示す、同時に丸めモード制御を用いる、2アップコンバート、スウィズル、スワップ、および/または、ダウンコンバートを用いることが出来る、並びに、3グラフィックデータタイプで動作することが所望される場合に有用である。例えば、アップコンバート、スウィズル、スワップ、ダウンコンバート、およびグラフィックデータタイプは、異なる形式のソースを処理する際に必要となる命令の数を減らす。他の例としては、例外を可能とする性能により、指示される丸めモードでIEEEの規格に完全に準拠することが可能となる。例示的な特定のベクトルフレンドリーな命令形式図10A、図10B、および図10Cは、本願発明の実施形態に係る例示的な特定のベクトルフレンドリーな命令形式を示すブロック図である。図10A、図10B、および図10Cは、フィールドの場所、サイズ、解釈、および順序、並びに、これらのフィールドのうちいくつかの値を特定するという意味で特定的である、特定のベクトルフレンドリーな命令形式1000を示す。特定のベクトルフレンドリーな命令形式1000を用いて、x86命令の拡張を行ってもよく、よって、フィールのうちいくつかは、既存のx86命令のセット、およびその拡張例えばAVXに用いられるものと同様、または同じである。この形式は、拡張された既存のx86命令のセットのプレフィックスエンコードフィールド、リアルオペコードバイトフィールド、MODR/Mフィールド、SIBフィールド、変位フィールド、および、即値フィールドに対応したままである。図10A、図10B、および図10Cからのフィールドがマッピングされる図9Aおよび図9Bのフィールドが示されている。なお、本願発明の実施形態は、例示を目的とし、汎用のベクトルフレンドリーな命令形式900の文脈で特定のベクトルフレンドリーな命令形式1000に関して説明するが、本願発明は、特に記される場合を除き、特定のベクトルフレンドリーな命令形式1000に限定されない。例えば、特定のベクトルフレンドリーな命令形式1000は特定のサイズのフィールドを有するものとして示されているが、汎用のベクトルフレンドリーな命令形式900に関しては様々なフィールドが様々なサイズを有し得る。特定の例として、データ要素幅フィールド964は特定のベクトルフレンドリーな命令形式1000において1ビットのフィールドとして示されているが、本願発明はそのように限定されないつまり、汎用のベクトルフレンドリーな命令形式900のデータ要素幅フィールド964は他のサイズを有し得る。形式-図10A、図10B、および図10C汎用のベクトルフレンドリーな命令形式900は、図10A、図10B、および図10Cで示される順序で以下に列挙するフィールドを含む。EVEXPrefixBytes0-3EVEXPrefix1002-4バイト形式でエンコードされている。形式フィールド940EVEXByte0,bits[7:0]-第1バイトEVEXByte0は、形式フィールド940であり、0x62本願発明の一実施形態において、ベクトルフレンドリーな命令形式を区別するのに用いられる一意の値を含む。第2~4バイトEVEXBytes1-3は特定の機能を提供する複数のビットフィールドを含む。REXフィールド1005EVEXByte1,bits[7-5]-EVEX.RbitfieldEVEXByte1,bit[7]-R,EVEX.XbitfieldEVEXbyte1,bit[6]-X、および957BEXbyte1,bit[5]-Bからなる。EVEX.R,EVEX.XおよびEVEX.Bビットフィールドは、対応するVEXビットフィールドと同様の機能を提供し、1の補数形式を用いてエンコードされる。つまり、ZMM0は、1111Bとしてエンコードされ、ZMM15は、0000Bとしてエンコードされる。当分野で公知のように命令の他のフィールドは、レジスタインデックスの下位3ビットrrr、xxx、およびbbbをエンコードするので、EVEX.R、EVEX.X、およびEVEX.Bを加えることにより、Rrrr、Xxxx、およびBbbbが形成され得る。REXフィールド1010-このフィールドは、REXフィールド1010の最初の部分であり、拡張された32レジスタセットの上位16および下位16のうちいずれかをエンコードするのに用いられるEVEX.RビットフィールドEVEXByte1,bit[4]-Rである。本願発明の一実施形態において、以下に示す他のビットと共にこのビットは、リアルオペコードバイトが62であるBOUND命令と周知のx8632ビットモードで区別すべくビット反転形式で格納されるが、MODフィールドの11の値をMODR/Mフィールド以下に説明するで受け入れない。代替的な実施形態においては、このビット、および以下に示された他のビットは反転形式で格納されない。1の値を用いて下位16のレジスタをエンコードする。言い換えると、EVEX.R、EVEX.R、および他のフィールドからの他のRRRを組み合わせて、RRrrrが形成される。オペコードマップフィールド1015EVEXbyte1,bits[3:0]-mmmm-このコンテンツは、示唆された先頭のオペコードバイト0F、0F38、または、0F3をエンコードする。データ要素幅フィールド964EVEXbyte2,bit[7]-W-EVEX.Wと表記される。EVEX.Wは、データタイプの粒度サイズを定義するのに用いられる32ビットのデータ要素、または64ビットのデータ要素。EVEX.vvvv1020EVEXByte2,bits[6:3]-vvvv-EVEX.vvvvの役割には、以下のものが含まれ得る。1EVEX.vvvvは、反転された1の補数形式で特定される第1ソースレジスタオペランドをエンコードし、2以上のソースオペランドの命令に有効である、2EVEX.vvvvは、特定のベクトルシフトに関し、1の補数形式で特定される宛て先レジスタオペランドをエンコードする、3EVEX.vvvvは、何れのオペランドもエンコードせず、当該フィールドは残しておかれ、1111bを含む。よって、EVEX.vvvvフィールド1020は、反転された1の補数形式で格納される第1ソースレジスタ指定子の4つの下位ビットをエンコードする。命令に応じて、追加の異なるEVEXビットフィールドが、指定子のサイズを32レジスタに拡張するのに用いられる。EVEX.U968クラスフィールドEVEXbyte2,bit[2]-U-EVEX.U=0の場合、クラスA、またはEVEX.U0を示し、EVEX.U=1の場合、クラスB、またはEVEX.U1を示す。プレフィックスエンコードフィールド1025EVEXbyte2,bits[1:0]-pp-ベース動作フィールドに追加のビットを提供する。EVEXプレフィックス形式のレガシーSSE命令のサポートを提供するのに加え、このフィールドは、SIMDプレフィックスをコンパクト化するのに有用であるSIMDプレフィックスを表現するのに1バイトを必要とせず、EVEXPrefixは2ビットのみ必要とする。一実施形態において、レガシー形式、およびEVEXプレフィックス形式の両方のSIMDプレフィックス66H、F2H、F3Hを用いるレガシーSSE命令をサポートするべく、これらのレガシーSIMDプレフィックスは、SIMDプレフィックスエンコードフィールドにエンコードされ、実行時には、デコーダのPLAに提供される前に、レガシーSIMDプレフィックスに拡張されるつまり、PLAは修正を加えることなくこれらのレガシー命令のレガシー形式およびEVEX形式を実行することが出来る。より新しい命令はEVEXプレフィックスエンコードフィールドのコンテンツを直接的にオペコード拡張として用いることが出来るが、特定の実施形態においては、一貫性を保つべく同様のやり方で拡張が行われるが、これらのレガシーSIMDプレフィックスによる異なる意味の特定を可能とする。代替的な実施形態において、2ビットのSIMDプレフィックスエンコードをサポートするようPLAを再設計し、よって、拡張が必要とされない。アルファフィールド952EVEXbyte3,bit[7]-EH。EVEX.EH、EVEX.rs、EVEX.RL、EVEX.writemaskcontrolおよびEVEX.Nとしても知られる。αを用いても示される-上述したように、このフィールドはコンテンツ特有のものである。追加の説明は本明細書において以下に示す。ベータフィールド954EVEXbyte3,bits[6:4]-SSS。EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLBとしても知られる。βを用いても示される-上述したように、このフィールドはコンテンツ特有のものである。追加の説明は本明細書において以下に示す。REXフィールド1010-このフィールドはREXフィールドの残りであり、拡張された32レジスタセットの上位16および下位16のうちいずれかをエンコードするのに用いられ得るEVEX.VビットフィールドEVEXByte3,bit[3]-Vである。このビットはビット反転形式で格納される。下位16のレジスタをエンコードするのに1の値が用いられる。言い換えると、EVEX.VとEVEX.vvvvとを組み合わせてVVVVVが形成される。書き込みマスクフィールド970EVEXbyte3,bits[2:0]-kkk-このコンテンツは、上述したように書き込みマスクレジスタのレジスタのインデックスを特定する。本願発明の一実施形態において、特定値EVEX.kkk=000は特定の命令に対し書き込みマスクが用いられないことを示唆する特別な挙動を示すこのことは、全ての1にハードワイヤされた、またはマスキングハードウェアをバイパスするハードウェアにハードワイヤされた書き込みマスクを用いることを含む様々なやり方で実装することが出来る。リアルオペコードフィールド1030Byte4このフィールドは、オペコードバイトとしても知られる。オペコードの一部はこのフィールドで特定される。MODR/Mフィールド1040Byte5修飾子フィールド946MODR/M.MOD,bits[7-6]-MODフィールド1042-上述したように、MODフィールド1042のコンテンツは、メモリアクセス動作と非メモリアクセス動作とを区別する。このフィールドは本明細書において以下にさらに説明する。MODR/M.regフィールド1044,bits[5-3]-ModR/M.regフィールドの役割は、2つの状況に要約することが出来る。ModR/M.regが、宛て先レジスタオペランド、およびソースレジスタオペランドのうちいずれかをエンコードする。または、ModR/M.regが、オペコード拡張として扱われ、いずれの命令オペランドをエンコードするのにも用いられない。MODR/M.r/mフィールド1046,bits[2-0]-ModR/M.r/mフィールドの役割には以下のものが含まれ得る。ModR/M.r/mが、メモリアドレスを参照する命令オペランドをエンコードする。または、ModR/M.r/mが、宛て先レジスタオペランド、およびソースレジスタオペランドのいずれかをエンコードする。スケール、インデックス、ベースSIBバイトByte6スケールフィールド960SIB.SS,bits[7-6]-上述したように、スケールフィールド960のコンテンツは、メモリアドレスの生成に用いられる。このフィールドは本明細書において以下にさらに説明する。SIB.xxx1054bits[5-3]、および、SIB.bbb1056bits[2-0]-これらのフィールドのコンテンツは、レジスタインデックスXxxxおよびBbbbに関連して上記にて参照した。変位バイトByte7、または、Bytes7-10変位フィールド962ABytes7-10-MODフィールド1042が10を含む場合、バイト7-10は変位フィールド962Aであり、レガシー32ビットの変位disp32と同じく動作し、バイト粒度で動作する。変位係数フィールド962BByte7-MODフィールド1042が01を含む場合、バイト7は変位係数フィールド962Bである。このフィールドの場所は、バイト粒度で動作するレガシーx86命令セットの8ビット変位disp8の場所と同じである。disp8は符号が拡張されているので、-128~127バイトのオフセットのみに対応出来る。64バイトのキャッシュに関しては、disp8は、-128、-64、0、および64の4つの実際に有用な値にのみ設定され得る8ビットを用いる。さらに大きな範囲が必要とされることが多いので、disp32が用いられる。しかし、disp32は4バイトを必要とする。disp8およびdisp32と対照的に、変位係数フィールド962Bはdisp8の再解釈である。変位係数フィールド962Bを用いる場合、実際の変位は、変位係数フィールドのコンテンツにメモリオペランドアクセスのサイズNを乗算して決定される。このタイプの変位は、disp8Nと示される。これにより、平均の命令長さが短くなる変位に関して用いられるよりも1つのバイトがより大きな範囲に対して用いられる。そのような圧縮された変位は、有効な変位はメモリアクセスの粒度の倍数であり、よって、アドレスオフセットの冗長下位ビットは、エンコードされる必要がないという仮定に基づいている。言い換えると、変位係数フィールド962Bはレガシーx86命令セットの8ビット変位に置き換わる。よって、変位係数フィールド962Bは、x86命令セットの8ビット変位と同じやり方でエンコードされつまり、ModRM/SIBのエンコードルールには変更がない、disp8がdisp8Nにオーバーロードされるoverloaded点だけが異なる。言い換えると、エンコードルールまたはエンコード長さには変化がないが、バイトごとのアドレスオフセットを得るには、メモリオペランドのサイズで変位をスケーリングする必要があるハードウェアによる変位値の解釈にのみ変化がある。即値即値フィールド972は上述したように動作する。例示的なレジスタアーキテクチャ-図11図11は、本願発明の一実施形態に係るレジスタアーキテクチャ1100のブロック図である。レジスタアーキテクチャのレジスタファイルおよびレジスタを以下に列挙する。ベクトルレジスタファイル1110示される実施形態において、1112ビットの幅を有する32個のベクトルレジスタがある。これらのレジスタをzmm0~zmm31と呼ぶ。最初の16個のレジスタの下位956ビットは、レジスタymm0~16にオーバーレイされてoverlaidいる。最初の16zmmレジスタの下位128ビットymmレジスタの下位128ビットは、レジスタxmm0~15にオーバーレイされている。特定のベクトルフレンドリーな命令形式1000は以下の表に示すようにこれらオーバーレイされたレジスタファイルに対して動作する。言い換えると、ベクトル長さフィールド959Bは、最大長さおよび1以上の他のより短い長さのうちから選択を行う。ここでそのようなより短い長さのそれぞれは先行する長さの半分である。ベクトル長さフィールド959Bを有さない命令テンプレートは、最大ベクトル長さで動作する。さらに、一実施形態において、特定のベクトルフレンドリーな命令形式1000のクラスB命令テンプレートは、パックされた、またはスカラの単/倍精度浮動小数点データ、およびパックされた、またはスカラの整数データに対し動作する。スカラ演算は、zmm/ymm/xmmレジスタの下位のデータ要素の位置に対して行われる演算である。上位のデータ要素の位置は命令の前の位置と同じままである、または実施形態によってはゼロにされる。書き込みマスクレジスタ1115-示される実施形態において、それぞれサイズが64ビットである8個の書き込みマスクレジスタk0~k7がある。上述したように、本願発明の一実施形態において、ベクトルマスクレジスタk0は書き込みマスクとして用いることが出来ない。エンコードの際には、このフィールドは通常k0が書き込みマスクに用いられることを示し、0xFFFFのハードワイヤされた書き込みマスクを選択し、効果的に当該命令の書き込みマスクを無効化する。マルチメディア拡張制御ステータスレジスタMXCSR1120-示される実施形態において、この32ビットレジスタは浮動小数点演算に用いられるステータスおよび制御ビットを提供する。汎用レジスタ1125-示される実施形態において、メモリオペランドに対応する既存のx86アドレシングモードと用いられる16個の64ビット汎用レジスタがある。これらのレジスタはRAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、および、R8~R15で示される。拡張フラグEFLAGSレジスタ1130-示される実施形態において、この32ビットのレジスタは、多くの命令の結果を記録するのに用いられる。浮動小数点制御ワードFCWレジスタ1135、および、浮動小数点ステータスワードFSWレジスタ1140-示される実施形態において、これらのレジスタは、FCWの場合に丸めモード、例外マスク、およびフラグを設定し、FSWの場合に例外の記録をつけるべく、x87命令セット拡張によって用いられる。MMXパックド整数フラットレジスタファイル1150がエイリアスされるスカラ浮動小数点スタックレジスタファイルx87スタック1145-示される実施形態において、x87スタックは、x87命令セット拡張を用いる32/64/80ビット浮動小数点データに対するスカラ浮動小数点演算を実行するのに用いられる8個の要素のスタックであり、MMXレジスタは、64ビットのパックされた整数データに対する演算を実行し、MMXレジスタとXMMレジスタとの間で実行されるいくつかの演算のオペランドを保持するのに用いられる。セグメントレジスタ1155-示される実施形態において、セグメント化されたアドレス生成に用いられるデータを格納するのに用いられる6個の16ビットレジスタがある。RIPレジスタ1165-示される実施形態において、この64ビットレジスタは、命令ポインタを格納する。本願発明の代替的な実施形態においては、より広い、またはより狭いレジスタが用いられる。加えて、本願発明の代替的な実施形態においては、より多くの、より少ない、または異なるレジスタファイルおよびレジスタが用いられる。例示的なインオーダープロセッサアーキテクチャ-図12Aおよび図12B図12Aおよび図12Bは、例示的なインオーダープロセッサアーキテクチャのブロック図を示す。これらの例示的な実施形態は、ワイドベクトルプロセッサVPUで補強されたインオーダーCPUコアの複数のインスタンシエイションに基づいて設計されている。コアはe14tアプリケーションに応じて、何らかの所定の関数ロジック、メモリI/Oインタフェース、および、他の必要なI/Oロジックと高帯域幅インターコネクトネットワークを介して通信を行う。例えば、スタンドアローンGPUとしての本実施形態の実施は、典型的にはPCIeバスを含む。図12Aは、本願発明の実施形態に係る、シングルCPUコア、当該シングルCPUコアのオンダイインターコネクトネットワーク1202との接続、およびレベル2L2キャッシュ1204のローカルサブセットを示すブロック図である。命令デコーダ1200は、特定のベクトル命令形式1000を含む拡張を有するx86命令セットをサポートする。本願発明の一実施形態においては、設計を単純にするべくスカラユニット1208およびベクトルユニット1210は別個のレジスタセットを用いそれぞれ、スカラレジスタ1212、およびベクトルレジスタ1214、これらの間で転送されるデータはメモリへ書き込まれ、レベル1L1キャッシュ1206から読み出されるが、本願発明の代替的な実施形態においては、異なるアプローチが用いられる例えば、1つのレジスタセットが用いられる、または、書き込みおよび読み出しが行われることなく2つのレジスタファイル間でデータの転送を可能とする通信パスが含まれる。L1キャッシュ1206は、メモリのスカラユニットおよびベクトルユニットへのキャッシュのための低いレイテンシアクセスを可能とする。ベクトルフレンドリーな命令形式のロードオペランド命令と併せて、このことは、拡張されたレジスタファイルと幾分同じようにL1キャッシュ1206を扱えることを意味する。このことにより、多くのアルゴリズム、特に削除ヒントフィールド952Bのアルゴリズムに関して性能を向上させられる。L2キャッシュ1204のローカルサブセットは、CPUコア毎に1つの、別個のローカルサブセットへ分割されるグローバルなL2キャッシュの一部である。各CPUは、L2キャッシュ1204の自身のローカルサブセットへの直接的なアクセスパスを有する。CPUコアによって読み出されたデータは、そのL2キャッシュサブセット1204に格納され、それぞれ自身のローカルL2キャッシュサブセットにアクセスする他のCPUと並行して迅速にアクセスすることが出来る。CPUコアによって書き込まれたデータは、自身のL2キャッシュサブセット1204に格納され、必要であれば他のサブセットからフラッシュされる。リングネットワークによって、共有されるデータの一貫性が確保される。図12Bは、本願発明の実施形態に係る、図12AのCPUコアの一部を示す分解図である。図12BはL1キャッシュ1204のL1データキャッシュ1206A部分、並びに、ベクトルユニット1210およびベクトルレジスタ1214の詳細を示す。詳細には、ベクトルユニット1210は整数、単精度浮動小数点、および倍精度浮動小数点命令を実行する16ワイドベクトル処理ユニットVPU16ワイドALU1228を参照である。VPUは、スウィズルユニット1220のレジスタインプットのスウィズリング、数値変換ユニット1222A、1222Bの数値変換、およびメモリインプットの複製ユニット1224の複製をサポートする。書き込みマスクレジスタ1226により、結果として生じるベクトル書き込みの予測が可能となる。レジスタデータは、例えば行列の乗算をサポートするなど、様々なやり方でスウィズリング出来る。メモリからのデータは、複数のVPUレーンに対して複製出来る。このことはグラフィックおよび非グラフィック両方の並列データ処理に共通の演算であり、キャッシュの効率性をはるかに向上させる。リングネットワークは、CPUコア、L2キャッシュ、および他のロジックグロックなどのエージェントが互いにチップ内で通信を行えるよう双方向性である。各リングデータパスは、一方向あたり1112ビット幅である。例示的なアウトオブオーダーアーキテクチャ-図13図13は、本願発明の実施形態に係る例示的なアウトオブオーダーアーキテクチャを示すブロック図である。詳細には、図13は、ベクトルフレンドリーな命令形式およびその実行に対応するよう修正された周知の例示的なアウトオブオーダーアーキテクチャを示す。図13において、矢印は2以上のユニットの結合を示し、矢印の方向はそれらユニット間のデータフローの方向を示す。図13は、実行エンジンユニット1310およびメモリユニット1315に結合されたフロントエンドユニット1305を含む。実行エンジンユニット1310はさらに、メモリユニット1315に結合されている。フロントエンドユニット1305は、レベル2L2分岐予測ユニット1322に結合されたレベル1L1分岐予測ユニット1320を含む。L1およびL2分岐予測ユニット1320、1322は、L1命令キャッシュユニット1324に結合されている。L1命令キャッシュユニット1324は、命令トランスレーションルックアサイドバッファTLB1326に結合され、命令トランスレーションルックアサイドバッファTLB1326はさらに、命令フェッチ/プリデコードユニット1328に結合されている。命令フェッチ/プリデコードユニット1328は、命令キューユニット1330に結合され、命令キューユニット1330はさらにデコードユニット1332に結合されている。デコードユニット1332は、1個の複雑なデコーダユニット1334、および3個の単純なデコーダユニット1336、1338、1340を備える。デコードユニット1332は、マイクロコードROMユニット1342を含む。デコードユニット1332は、デコード段階について述べたセクションで上述したように動作してもよい。L1命令キャッシュユニット1324はさらに、メモリユニット1315内のL2キャッシュユニット1348に結合されている。命令TLBユニット1326はさらに、メモリユニット1315内の第2レベルTLBユニット1346に結合されている。デコードユニット1332、マイクロコードROMユニット1342、およびループストリーム検出ユニット1344はそれぞれ、実行エンジンユニット1310内のリネーム/アロケータユニット1356に結合されている。実行エンジンユニット1310は、リネーム/アロケータユニット1356を含み、リネーム/アロケータユニット1356は、リタイヤユニット1374および統合スケジューラユニット1358に結合されている。リタイヤユニット1374はさらに、実行ユニット1360に結合され、リオーダバッファユニット1378を含む。統合スケジューラユニット1358はさらに、物理レジスタファイルユニット1376に結合され、物理レジスタファイルユニット1376は実行ユニット1360に結合されている。物理レジスタファイルユニット1376は、ベクトルレジスタユニット1377A、書き込みマスクレジスタユニット1377B、および、スカラレジスタユニット1377Cを備える。これらのレジスタユニットは、ベクトルレジスタ1110、ベクトルマスクレジスタ1115、および、汎用レジスタ1125を提供してもよく、物理レジスタファイルユニット1376は、示されていない追加のレジスタファイルを含んでもよい例えば、MMXパックド整数フラットレジスタファイル1150に対しエイリアスされたスカラ浮動小数点スタックレジスタファイル1145。実行ユニット1360は3個のミックスされたスカラおよびベクトルユニット1362、1364、1372、ロードユニット1366、格納アドレスユニット1368、および、格納データユニット1370を含む。ロードユニット1366、格納アドレスユニット1368、および、格納データユニット1370はそれぞれさらに、メモリユニット1315内のデータTLBユニット1352に結合されている。メモリユニット1315は、第2レベルTLBユニット1346を含み、第2レベルTLBユニット1346は、データTLBユニット1352に結合されている。データTLBユニット1352はL1データキャッシュユニット1354に結合されている。L1データキャッシュユニット1354はさらに、L2キャッシュユニット1348に結合されている。いくつかの実施形態において、L2キャッシュユニット1348はさらに、メモリユニット1315内、および/または外のL3およびさらに高いレベルのキャッシュユニット1350に結合されている。例として、例示的なアウトオブオーダーアーキテクチャは、次のように処理パイプラインを実施する。1命令フェッチ/プリデコードユニット1328がフェッチおよび長さデコード段階を実行する、2デコードユニット1332がデコード段階を実行する、3リネーム/アロケータユニット1356がアロケーションおよびリネーム段階を実行する、4統合スケジューラユニット1358がスケジューリング段階を実行する、5物理レジスタファイルユニット1376、リオーダバッファユニット1378、およびメモリユニット1315がレジスタ読み出し/メモリ読み出し段階を実行し、実行ユニット1360が実行/データ変換段階を実行する、6メモリユニット1315およびリオーダバッファユニット1378が、書き戻し/メモリ書き込み段階を実行する、7リタイヤユニット1374がROB読み出し段階を実行する、8様々なユニットが例外取り扱い段階9164に関わってもよい、9リタイヤユニット1374および物理レジスタファイルユニット1376がコミット段階を実行する。例示的なシングルコアおよびマルチコアプロセッサ-図18図18は、本願発明の実施形態に係る、集積メモリコントローラおよび集積グラフィックを備えたシングルコアプロセッサおよびマルチコアプロセッサ1800を示すブロック図である。図18において、実線の四角はシングルコア1802A、システムエージェント1810、および1以上のバスコントローラユニット1816からなるセットを含むプロセッサ1800を示し、破線の四角は、複数のコア1802A~N、システムエージェントユニット1810内の1以上の集積メモリコントローラユニット1814からなるセット、および集積グラフィックロジック1808を含む代替的なプロセッサ1800を任意的な追加として示す。メモリ階層は、コア内の1以上のレベルのキャッシュ、1以上の共有キャッシュユニット1806からなるセット、複数の集積メモリコントローラユニット1814からなるセットに結合された外部メモリ図示せずを含む。複数の共有キャッシュユニット1806からなるセットは、レベル2L2、レベル3L3、レベル4L4、または他のレベルのキャッシュなど1以上の中間レベルのキャッシュ、最後のレベルのキャッシュLLC、および/またはこれらの組み合わせを含んでよい。一実施形態においては、リングベースのインターコネクトユニット1812が集積グラフィックロジック1808、複数の共有キャッシュユニット1806からなるセット、および、システムエージェントユニット1810を相互接続するが、代替的な実施形態においては、そのようなユニットを相互接続する周知の技術をいくつか用いてもよい。いくつかの実施形態において、1以上のコア1802A~Nは、マルチスレッドに対応可能である。システムエージェント1810は、コア1802A~Nの調整を行い動作させるコンポーネントを含む。システムエージェントユニット1810は、例えば、電力制御ユニットPCU、およびディスプレイユニットを含む。PCUは、コア1802A~Nおよび集積グラフィックロジック1808の電力状況を制御するのに必要なロジックおよびコンポイーネントであるか、それらを含んでもよい。ディスプレイユニットが1以上の外部接続されたディスプレイを駆動する。コア1802A~Nは、アーキテクチャ、および/または命令セットに関して、同質、または異質のものであってもよい。例えば、コア1802A~Nのうちいくつかはインオーダー例えば、図12Aおよび図12Bで示すようなであり、他のコアは、アウトオブオーダー例えば、図13に示すようなであってもよい。他の例として、コア1802A~Nのうち2以上は、同じ命令セットを実行可能であり、他のコアは、その命令セットのサブセットのみ、または異なる命令セットを実行可能である。少なくとも1つのコアが、本明細書で説明するベクトルフレンドリーな命令形式を実行可能である。プロセッサは、米国カリフォルニア州サンタクララのIntelCorporationにより販売されるCore登録商標i3、i5、i7、2Duo、およびQuad、Xeon登録商標、またはItanium登録商標プロセッサなどの汎用プロセッサであってよい。代替的に、プロセッサは他の企業が販売するものであってもよい。プロセッサは、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、コプロセッサ、埋め込み型プロセッサなどの特定用途プロセッサであってもよい。プロセッサは1以上のチップ上で実装されてもよい。プロセッサ1800は、BiCMOS、CMOS、またはNMOSなどの処理技術をいくつか用い、1以上の基板の一部である、および/または、それら基板上で実装されてもよい。例示的なコンピュータシステムおよびプロセッサ-図14~17図14~16は、プロセッサ1800を含めるのに適した例示的なシステムを示す。図17は、1以上のコア1802を含みうる例示的なシステムオンチップSoCを示す。ラップトップ、デスクトップ、ハンドヘルドPC、パーソナルデジタルアシスタント、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、埋め込み型プロセッサ、デジタル信号プロセッサDSP、グラフィックデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、携帯型メディアプレーヤ、ハンドヘルドデバイス、および様々な他の電子デバイスに関する当分野で公知の他のシステム設計および構成も適している。一般的に、本明細書で開示されるプロセッサ、および/または他の実行ロジックを組み込むことが可能な非常に幅広い種類のシステムまたは電子デバイスが適している。図14は、本願発明の一実施形態に係るシステム1400を示すブロック図である。システム1400は、1以上のプロセッサ1410、1415を含み、1以上のプロセッサ1410、1415はグラフィックメモリコントローラハブGMCH1420に結合されている。追加のプロセッサ1415は任意で用いられるので、図14において破線で示されている。各プロセッサ1410、1415はプロセッサ1800の何らかのバージョンであってよい。しかし、集積グラフィックロジックおよび集積メモリ制御ユニットがプロセッサ1410、1415内に存在するということは考えられにくい。図14は、GMCH1420が、例えばダイナミックランダムアクセスメモリDRAMであってよいメモリ1440に結合されていてよいことを示す。DRAMは、少なくとも一実施形態において、非揮発性キャッシュに関連付けられている。GMCH1420は、チップセットである、またはチップセット一部である。GMCH1420はプロセッサ1410、1415と通信を行い、プロセッサ1410、1415とメモリ1440との間の相互作用を制御してもよい。またGMCH1420は、プロセッサ1410、1415と、システム1400の他の要素との間の加速バスインタフェースとして動作してもよい。少なくとも一実施形態において、GMCH1420は、フロントサイドバスFSB1495などのマルチドロップバスを介してプロセッサ1410、1415と通信を行う。さらに、GMCH1420は、ディスプレイ1445フラットパネルディスプレイなどに結合されている。GMCH1420は、集積グラフィックアクセラレータを含んでもよい。GMCH1420はさらに、様々な周辺デバイスをシステム1400に結合するのに用いられ得る、入力/出力I/OコントローラハブICH1450に結合されている。図14の実施形態においては、他の周辺デバイス1470と併せて、ICH1450に結合されている独立したグラフィックデバイスであってよい外部グラフィックデバイス1460が例として示されている。代替的に、追加的な、または異なるプロセッサもシステム1400に存在してもよい。例えば、追加のプロセッサ1415には、プロセッサ1410と同じ追加のプロセッサ、プロセッサ1410と異質の、または対称的な追加のプロセッサ、アクセラレータ例えば、グラフィックアクセラレータ、またはデジタル信号処理DSPユニットなど、フィールドプログラマブルゲートアレイ、または他の何らかのプロセッサが含まれてよい。アーキテクチャ、マイクロアーキテクチャ、熱、電力消費特性などの面で、物理リソース1410、1415毎に様々な利点がある。これらの利点の差は、処理要素1410、1415間の対称性または異質性を利用し有効に活用される。少なくとも一実施形態において、様々な処理要素1410、1415が同じダイパッケージに存在してもよい。図15は、本願発明の実施形態に係る第2システム1500を示すブロック図である。図15に示すようにマルチプロセッサシステム1500は、ポイントツーポイントインターコネクトシステムであり、ポイントツーポイントインターコネクト1550で結合された第1プロセッサ1570および第2プロセッサ1580を含む。図15に示すように各プロセッサ1570、1580はプロセッサ1800の何らかのバージョンであってよい。代替的に、1以上のプロセッサ1570、1580は、アクセラレータまたはフィールドプログラマブルゲートアレイなど、プロセッサ以外の要素であってよい。2つのプロセッサ1570、1580のみが示されているが、本願発明の態様はこのことに限定されない。他の実施形態において、1以上の追加的な処理要素が任意のプロセッサに存在してもよい。プロセッサ1570はさらに、集積メモリコントローラハブIMC1572、およびポイントツーポイントP-P1576、1578を含んでもよい。同様に、第2プロセッサ1580は、IMC1582およびP-Pインタフェース1586、1588を含んでもよい。プロセッサ1570、1580は、PtPインタフェース回路1578、1588を用いてポイントツーポイントPtPインタフェース1550を介してデータを交換してもよい。図15に示すようにIMC1572、1582は各プロセッサを、対応するメモリ、つまり各プロセッサにローカルに取り付けられた主メモリの一部であってもよいメモリ1542およびメモリ1544に結合する。プロセッサ1570、1580はそれぞれ、ポイントツーポイントインタフェース回路1576、1594、1586、1598を用いて個々のP-Pインタフェース1552、1554を介しチップセット1590とデータを交換してもよい。またチップセット1590は、高性能グラフィックインタフェース1539を介して高性能グラフィック回路1538とデータを交換してもよい。プロセッサが低電力モードにされた場合、いずれか、または両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納されるように、共有キャッシュ図示せずは、両プロセッサ外でいずれかのプロセッサに含まれ、かつ、P-Pインターコネクトを介しプロセッサと接続されていてもよい。チップセット1590は、インタフェース1596を介して第1バス1516に結合されていてもよい。一実施形態において、第1バス1516は、PeripheralComponentInterconnectPCIバス、或いは、PCIExpressバスまたは他の第3世代I/Oインターコネクトバスなどのバスであってもよい。ただし、本願発明の態様はこのことに限定されない。図15に示すように、第1バス1516を第2バス1520へ結合するバスブリッジ1518と併せて、様々なI/Oデバイス1514が第1バス1516に結合されていてもよい。一実施形態において、第2バス1520はlowpincountLPCバスであってもよい。一実施形態において、キーボード/マウス1522、通信デバイス1526、並びに、ディスクドライブまたは、コード1530を含んでよい他の大容量記憶装置などのデータ格納ユニット1528など様々なデバイスが第2バス1520に結合されていてもよい。さらに、オーディオI/O1524が第2バス1520に結合されていてもよい。なお他のアーキテクチャを用いることも可能である。例えば、図15のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバスまたは他の同様のアーキテクチャを実装してもよい。図16は、本願発明の実施形態に係る第3システム1600を示すブロック図である。図15および図16において同様の要素は、同様の参照符号が付されており、図15の特定の態様は、図16の他の態様を曖昧にすることを避けるべく図16において省略されている。図16は、処理要素1570、1580がそれぞれ集積メモリ-I/O制御ロジックCL1572、1582を含んでよいことを示す。少なくとも一実施形態において、CL1572、1582は図14および図15に関連して上述したようなメモリコントローラハブロジックIMCを含んでもよい。加えて、CL1572、1582はI/O制御ロジックも含んでよい。図16は、メモリ1542、1544のみがCL1572、1582に結合されているのではなく、I/Oデバイス1614も制御ロジック1572、1582に結合されていることを示す。レガシーI/Oデバイス1615がチップセット1590に結合されている。図17は、本願発明の実施形態に係るSoC1700のブロック図を示す。同様の要素には同様の参照符号が付されている。また破線の四角はより高度なSoCの、任意で用いられる特徴を示す。図17において、インターコネクトユニット1702は、1以上のコア1802A~Nからなるセットおよび共有キャッシュユニット1806を含むアプリケーションプロセッサ1710と、システムエージェントユニット1810と、バスコントローラユニット1816と、集積メモリコントローラユニット1814と、集積グラフィックロジック1808、スチールカメラ、および/またはビデオカメラ機能を提供するイメージプロセッサ1724、ハードウェアオーディオアクセラレーションを提供するオーディオプロセッサ1726、および、ビデオエンコード/デコードアクセラレーションを提供するビデオプロセッサ1728を含みうる1以上のメディアプロセッサ1720からなるセットと、スタティックランダムアクセスメモリSRAMユニット1730と、ダイレクトメモリメモリアクセスDMAユニット1732と、1以上の外部ディスプレイに結合されるディスプレイユニット1740とに結合されている。本明細書で開示するメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそのような実装アプローチの組み合わせにより実施されてもよい。本願発明の実施形態は、少なくとも1つのプロセッサ、記憶システム揮発性、および非揮発性のメモリ、および/または記憶要素を含む、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを備えるプログラム可能なシステムで実行されるコンピュータプログラムまたはプログラムコードとして実施されてもよい。プログラムコードは、本明細書で開示される機能を実行し、出力情報を生成する入力データに適用されてもよい。出力情報は、公知の方式で、1以上の出力デバイスに適用されてもよい。この適用の目的において、処理システムは、例えば、デジタル信号プロセッサDSP、マイクロコントローラ、特定用途集積回路ASIC、またはマイクロプロセッサなどのプロセッサを有する何らかのシステムを含む。プログラムコードは、処理システムと通信を行う高水準の手続き型プログラミング言語またはオブジェクト指向のプログラミング言語で実施されてもよい。またプログラムコードは、所望される場合、アセンブリ言語または機械言語で実施されてもよい。事実、本明細書で開示されるメカニズムは、何らかの特定のプログラミング言語に限定されない。いずれの場合であっても、言語はコンパイラ型言語、またはインタープリタ型言語であってもよい。少なくとも1つの実施形態の1以上の態様は、機械によって読み出されると当該機械に本明細書で開示される技術を実施するロジックを作成させる、プロセッサ内の様々なロジックを表す機械可読媒体に格納された表現命令によって実施されてもよい。IPコアとし知られるそのような表現は、有形の機械可読媒体に格納され、ロジックまたはプロセッサを実際に作成する製造機械にロードされるべく様々な顧客または製造施設に提供されてもよい。そのような機械可読媒体には、これらに限定されるわけではないが、機械またはデバイスによって製造または形成される、ハードディスク、フロッピー登録商標ディスク、光学式ディスクコンパクトディスク読み取り専用メモリCD-ROM、コンパクトディスクリライタブルCD-RW、および光磁気ディスクなどを含む他の何らかのタイプのディスク、リードオンリーメモリROMなどの半導体デバイス、ダイナミックランダムアクセスメモリDRAMなどのランダムアクセスメモリRAM、スタティックランダムアクセスメモリSRAM、消去可能プログラム可能リードオンリーメモリEPROM、フラッシュメモリ、電気的消去可能プログラム可能リードオンリーメモリEEPROM、磁気または光学式カード、または、電子命令を格納するのに適した他の何らかのタイプの媒体などの記憶媒体を含む物品の非一時的な有形構造を含みうる。したがって、本願発明の実施形態は、本明細書で説明される構造、回路、装置、プロセッサ、および/またはシステム特徴を定めるベクトルフレンドリーな命令形式の命令を保持する、またはHardwareDescriptionLanguageHDLなどの設計データを保持する非一時的有形機械可読媒体も含む。そのような実施形態は、プログラム製品とも呼ばれ得る。場合によっては、命令コンバータを用いて、ソース命令セットからターゲット命令セットへ命令が変換される。例えば、命令コンバータは、命令をコアによって処理される1以上の他の命令にトランスレートするスタティックバイナリトランスレーション、ダイナミックコンパイルを含むダイナミックバイナリトランスレーションを用いて、モーフィングする、エミュレートする、または変換してもよい。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせによって実施されてもよい。命令コンバータは、プロセッサ上、プロセッサ外、または一部がプロセッサ上で一部がプロセッサ外であってもよい。図19は、本願発明の実施形態に係る、ソース命令セットのバイナリ命令をターゲット命令セットのバイナリ命令に変換するソフトウェア命令コンバータの利用を対比するブロック図である。示される実施形態において、命令コンバータはソフトウェア命令コンバータであるが、代替的に、命令コンバータは、ソフトウェア、ファームウェア、ハードウェア、またはこれらの様々な組み合わせで実施されてもよい。図19は、少なくとも1つのx86命令セットコアを備えるプロセッサ1916によりネイティブに実行され得るx86バイナリコード1906を生成するべくx86コンパイラ1904を用いてコンパイルされている高水準言語1902のプログラムを示すコンパイルされた命令のうちいくつかがベクトルフレンドリーな命令形式であるものと想定されている。少なくとも1つのx86命令セットコアを備えるプロセッサ1916は、1Intelx86命令セットコアの命令の実質的な部分、または、2少なくとも1つのx86命令セットコアを備えるIntelプロセッサと実質的に同じ結果を得るべく、少なくとも1つのx86命令セットコアを備えるIntelプロセッサで実行されることを目的とするアプリケーションのオブジェクトコードバージョンまたは他のソフトウェアに適合して実行する、または処理することにより、少なくとも1つのx86命令セットコアを備えるIntelプロセッサと実質的に同じ機能を実行出来るプロセッサを表す。x86コンパイラ1904は、少なくとも1つのx86命令セットコアを備えるプロセッサ1916で追加のリンケージ処理あり、またはなしで実行され得るx86バイナリコード1906例えばオブジェクトコードを生成するべく動作可能なコンパイラを表す。同様に、図19は、少なくとも1つのx86命令セットコアを備えないプロセッサ1914例えば、米国カリフォルニア州サニーベールのMIPSTechnologiesのMIPS命令セットを実行するコアを備えるプロセッサ、および/または米国カリフォルニア州サニーベールのARMHoldingsのARM命令セットを実行するコアを備えるプロセッサなどによってネイティブに実行され得る代替的な命令セットバイナリコード1910を生成するべく、代替的な命令セットコンパイラ1908を用いてコンパイルされ得る高水準言語1902のプログラムを示す。命令コンバータ1912を用いて、x86命令セットコアを備えないプロセッサ1914によってネイティブに実行され得るコードへx86バイナリコード1906を変換する。この変換されたコードが、代替的な命令セットバイナリコード1910と同じであることは考えられにくい。なぜなら、このことに対応可能な命令コンバータは作成しにくいからである。しかし、変換されたコードは、一般的な動作を実行し、代替的な命令セットからの命令によって構成されているであろう。よって、命令コンバータ1912は、エミュレーション、シミュレーション、または他の何らかの処理により、プロセッサ、或いは、x86命令セットプロセッサまたはコアを有さない他の電子デバイスがx86バイナリコード1906を実行することを可能とする、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせを表す。本明細書で開示されるベクトルフレンドリーな命令形式の命令の特定の動作は、ハードウェアコンポーネントで実行されてもよく、当該命令をプログラムされた回路または他のハードウェアコンポーネントによるそれらの動作の実行を引き起こす、または少なくともそのような結果をもたらすのに用いられる機械可読命令として実施され得る。回路には、ほんの数例を上げると、汎用プロセッサ、特定用途プロセッサ、またはロジック回路が含まれる。また動作は、場合によっては、ハードウェアとソフトウェアとの組み合わせによって実施されてもよい。実行ロジック、および/またはプロセッサは、命令によって特定される結果オペランドを格納するよう指示する機械命令、または当該機械命令から抽出された1以上の制御信号に応答する特定的な、または特定の回路または他のロジックを含んでもよい。例えば、本明細書で開示される命令の実施形態は、図14~17の1以上のシステムで実行されてもよく、ベクトルフレンドリーな命令形式の命令の実施形態は、システムによって実行されるプログラムコードに格納されてもよい。加えて、これら図面の処理要素は、本明細書で詳述されたパイプライン、および/またはアーキテクチャ例えば、インオーダーアーキテクチャ、およびアウトオブオーダーアーキテクチャのうち1つを用いてもよい。例えば、インオーダーアーキテクチャのデコードユニットは、命令をデコードし、デコードされた命令をベクトルユニットまたはスカラユニットに渡すなどしてもよい。上記の説明は、本願発明の好ましい実施形態を示すことを目的として提供された。上記の説明から、成長が早くさらなる進歩の予測が容易ではない当技術分野において特に、本願発明は構造に関して、また詳細部分において、当業者によって本願発明の原理から逸脱することなく、添付の請求項およびそれらの同等物の範囲内で本願発明に修正が加えられ得ることは明らかである。例えば、方法の1以上の動作は組み合わせられ得る、またはさらに分割され得る。代替的な実施形態ベクトルフレンドリーな命令形式がネイティブに実行される実施形態を説明してきたが、代替的な実施形態においては、異なる命令セットを実行する例えば、米国カリフォルニア州サニーベールのMIPSTechnologiesのMIPS命令セットを実行するプロセッサ、米国カリフォルニア州サニーベールのARMHoldingsのARM命令セットを実行するプロセッサなどのプロセッサ上で実行されるエミュレーションレイヤーを介してベクトルフレンドリーな命令形式を実行してもよい。また、図中のフロー図は本願発明の特定の実施形態によって実行される動作の特定の順序を示すが、そのような順序は例示であることが理解されるべきである例えば、代替的な実施形態においては、それらの動作を異なる順序で実行する、特定の動作を組み合わせる、または特定の動作を同時に行うなど。以上の説明において、説明を目的とし、本願発明の実施形態をよりよく理解いただけるように様々な特定の詳細を示してきた。しかし当業者であれば、それら特定の詳細のいくつかを用いずとも1以上の他の実施形態が実施可能であることを理解されよう。説明された特定の実施形態は、本願発明を限定するのではなく、本願発明の実施形態を例示するべく示されている。本願発明の態様は上記された特定の例によっては定められず、以下の請求項によってのみ定められる。"