(57)【要約】  プロセッサは、パックドデータアライメントプラス演算命令をデコードするデコードユニットを含む。命令は、第１のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第１のセット、第２のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第２のセット、少なくとも１つのデータエレメントオフセットを示す。実行ユニットは、命令に応答して、その各々が、ソースパックドデータオペランドの第１のセットのデータエレメント及びソースパックドデータオペランドの第２のセットのデータエレメントのペアにより実行されたオペレーションの値を有する結果データエレメントを含む結果パックドデータオペランドを格納する。実行ユニットは、少なくとも１つのデータエレメントオフセットを、ソースパックドデータオペランドの第１及び第２のセットのうち少なくとも対応する１つに適用する。少なくとも１つのデータエレメントオフセットは、ソースパックドデータオペランドの第１及び第２のセットにおいて、各ペアのデータエレメント間の対応関係のあらゆる欠如に対抗する。
2018516400.tif 000002
【特許請求の範囲】
【請求項１】
パックドデータアライメントプラス演算命令をデコードするデコードユニットであって、前記パックドデータアライメントプラス演算命令は、第１の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第１のセットを示し、第２の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第２のセットを示し、少なくとも１つのデータエレメントオフセットを示し、デスティネーション格納位置を示す、デコードユニットと、
前記デコードユニットに結合された実行ユニットであって、前記実行ユニットは、前記パックドデータアライメントプラス演算命令に応答して、結果パックドデータオペランドを前記デスティネーション格納位置に格納し、前記結果パックドデータオペランドは、その各々が、前記１つ又は複数のソースパックドデータオペランドの前記第１のセットのデータエレメント及び前記１つ又は複数のソースパックドデータオペランドの前記第２のセットのデータエレメントのペアにより実行されたオペレーションの値を有する複数の結果データエレメントを含む、実行ユニットと、
を備え、
前記実行ユニットは、前記少なくとも１つのデータエレメントオフセットを、前記１つ又は複数のソースパックドデータオペランドの前記第１のセット及び前記第２のセットのうち少なくとも対応する１つに適用し、前記少なくとも１つのデータエレメントオフセットは、前記１つ又は複数のソースパックドデータオペランドの前記第１のセット及び前記第２のセットにおける各ペアの前記データエレメント間の対応関係のあらゆる欠如に対抗する、
プロセッサ。
【請求項２】
前記デコードユニットは、前記１つ又は複数のソースパックドデータオペランドの前記第２のセットに対応する単一のデータエレメントオフセットのみを示す前記パックドデータアライメントプラス演算命令をデコードし、各ペアの前記データエレメントは、前記少なくとも１つのデータエレメントオフセットによって対抗される対応関係の欠如を有する、
請求項１に記載のプロセッサ。
【請求項３】
前記デコードユニットは、前記１つ又は複数のソースパックドデータオペランドの前記第１のセットに対応する第１のデータエレメントオフセット及び前記１つ又は複数のソースパックドデータオペランドの前記第２のセットに対応する第２のデータエレメントオフセットを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１に記載のプロセッサ。
【請求項４】
各ペアの前記データエレメントは、前記１つ又は複数のソースパックドデータオペランドの前記第１のセットに対する前記第１のデータエレメントオフセットの適用、及び前記１つ又は複数のソースパックドデータオペランドの前記第２のセットに対する前記第２のデータエレメントオフセットの適用によって対抗される対応関係の欠如を有する、
請求項３に記載のプロセッサ。
【請求項５】
前記デコードユニットは、第１のソースパックドデータオペランド及び第２のソースパックドデータオペランドを含む前記１つ又は複数のソースパックドデータオペランドの前記第１のセット、ならびに第３のソースパックドデータオペランド及び第４のソースパックドデータオペランドを含む前記１つ又は複数のソースパックドデータオペランドの前記第２のセットを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１に記載のプロセッサ。
【請求項６】
前記デコードユニットは、単一の第１のソースパックドデータオペランドのみを含む前記１つ又は複数のソースパックドデータオペランドの前記第１のセット、ならびに第２のソースパックドデータオペランド及び第３のソースパックドデータオペランドを含む前記１つ又は複数のソースパックドデータオペランドの前記第２のセットを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１に記載のプロセッサ。
【請求項７】
前記結果パックドデータオペランドは、前記第１のソースパックドデータオペランド及び前記第２のソースパックドデータオペランドの各々と同数のデータエレメントを含む、
請求項６に記載のプロセッサ。
【請求項８】
前記デコードユニットは、単一の第１のソースパックドデータオペランドのみを含む前記１つ又は複数のソースパックドデータオペランドの前記第１のセット、ならびに単一の第２のソースパックドデータオペランドのみを含む前記１つ又は複数のソースパックドデータオペランドの前記第２のセットを示す前記パックドデータアライメントプラス演算命令をデコードし、前記実行ユニットは、前記第２のソースパックドデータオペランドより少ないデータエレメントを有する前記結果パックドデータオペランドを格納する、
請求項１に記載のプロセッサ。
【請求項９】
前記デコードユニットは、前記少なくとも１つのデータエレメントオフセットのうち、複数の異なるデータエレメントオフセット値のいずれか１つを有することが可能なデータエレメントオフセットを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１０】
前記デコードユニットは、前記少なくとも１つのデータエレメントオフセットのうち、
最下位ビット位置に向かう方向における、少なくとも１及び２のデータエレメント位置のいずれか１つのオフセット、
０のデータエレメント位置のオフセット、ならびに
最上位ビット位置に向かう方向における、少なくとも１及び２のデータエレメント位置のいずれか１つのオフセット
のいずれか１つであることが可能なデータエレメントオフセットを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１１】
前記デコードユニットは、前記少なくとも１つのデータエレメントオフセットのうち、
最下位ビット位置に向かう方向における、少なくとも１、２、３、及び４のデータエレメント位置のいずれか１つのオフセット、
０のデータエレメント位置のオフセット、ならびに
最上位ビット位置に向かう方向における、少なくとも１、２、３、及び４のデータエレメント位置のいずれか１つのオフセット
のいずれか１つであることが可能なデータエレメントオフセットを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１２】
前記実行ユニットは、前記パックドデータアライメントプラス演算命令に応答して、その各々が、前記データエレメントの前記ペアにより実行された前記オペレーションの前記値を有する結果データエレメントを有する前記結果パックドデータオペランドを格納し、前記オペレーションは、加算、減算、乗算、除算、及び平均オペレーションの１つである、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１３】
前記実行ユニットは、デコードされた前記パックドデータアライメントプラス演算命令に応答して、各ペアの前記データエレメントに対して、垂直単一命令複数データ（ＳＩＭＤ）オペレーションを実行する、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１４】
前記デコードユニットは、
前記少なくとも１つのデータエレメントオフセットのデータエレメントオフセットの値を示す即値の１つを有し、かつ、前記少なくとも１つのデータエレメントオフセットのデータエレメントオフセットの値を示す値を格納するスカラレジスタを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１５】
前記実行ユニットを有するデジタル信号プロセッサの画像プロセッサユニットをさらに備える、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１６】
プロセッサにおける方法であって、
パックドデータアライメントプラス演算命令を受信する段階であって、前記パックドデータアライメントプラス演算命令は、第１の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第１のセットを示し、第２の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第２のセットを示し、少なくとも１つのデータエレメントオフセットを示し、デスティネーション格納位置を示す、段階と、
前記パックドデータアライメントプラス演算命令に応答して、結果パックドデータオペランドを前記デスティネーション格納位置に格納する段階であって、前記結果パックドデータオペランドは、その各々が、前記１つ又は複数のソースパックドデータオペランドの前記第１のセットからのデータエレメント及び前記１つ又は複数のソースパックドデータオペランドの前記第２のセットからのデータエレメントのペアにより実行されたオペレーションの値を有する複数の結果データエレメントを含み、各ペアの前記データエレメントは、前記１つ又は複数のソースパックドデータオペランドの前記第１のセット及び前記第２のセットにおいて非対応データエレメント位置にあったものであり、前記非対応データエレメント位置は、前記パックドデータアライメントプラス演算命令によって示される少なくとも１つのデータエレメントオフセットに基づいて異なっていたものである、段階と、
を備える方法。
【請求項１７】
受信する段階は、単一のデータエレメントオフセットのみを示す前記パックドデータアライメントプラス演算命令を受信する段階を含み、前記非対応データエレメント位置は、前記単一のデータエレメントオフセットだけ異なる、
請求項１６に記載の方法。
【請求項１８】
受信する段階は、前記１つ又は複数のソースパックドデータオペランドの前記第１のセットに対応する第１のデータエレメントオフセット及び前記１つ又は複数のソースパックドデータオペランドの前記第２のセットに対応する第２のデータエレメントオフセットを示す前記パックドデータアライメントプラス演算命令を受信する段階を含み、前記非対応データエレメント位置は、前記第１のデータエレメントオフセットと前記第２のデータエレメントオフセットとの間の差だけ異なる、
請求項１６に記載の方法。
【請求項１９】
受信する段階は、前記１つ又は複数のソースパックドデータオペランドの前記第１のセットの第１のソースパックドデータオペランド及び第２のソースパックドデータオペランドの両方を示し、前記１つ又は複数のソースパックドデータオペランドの前記第２のセットの第３のソースパックドデータオペランド及び第４のソースパックドデータオペランドの両方を示す前記パックドデータアライメントプラス演算命令を受信する段階を含む、
請求項１６に記載の方法。
【請求項２０】
格納する段階は、その各々が、前記データエレメントの前記ペアにより実行された前記オペレーションの前記値を有する前記複数の結果データエレメントを格納する段階を含み、前記オペレーションは、加算オペレーション、減算オペレーション、乗算オペレーション、除算オペレーション、及び平均オペレーションの１つである、
請求項１６に記載の方法。
【請求項２１】
前記データエレメントの前記ペアにより、垂直単一命令複数データ（ＳＩＭＤ）オペレーションとして前記オペレーションを実行する段階をさらに備え、前記方法は、デジタル信号プロセッサによる画像処理中の画素フィルタリング中に実行される、
請求項１６に記載の方法。
【請求項２２】
請求項１６から２１のいずれか１項に記載の方法を実行するための手段を備える装置。
【請求項２３】
第１の命令を含む命令を格納する機械可読記憶媒体を備える製品であって、前記第１の命令は、機械によって実行された場合に、請求項１６から２１のいずれか１項に記載の方法を、前記機械に実行させるように動作可能である、製品。
【請求項２４】
相互接続と、
前記相互接続に結合された請求項１から８のいずれか１項に記載のプロセッサと、
前記相互接続に結合された動的ランダムアクセスメモリ（ＤＲＡＭ）であって、画素フィルタリングアルゴリズムを実行する命令セットを格納するＤＲＡＭと、
を備え、
前記命令セットは、前記プロセッサによって実行された場合に、前記パックドデータアライメントプラス演算命令の複数のインスタンスを、各々異なるオフセットにより前記プロセッサに実行させる、
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書において説明される実施形態は、概して、プロセッサに関する。詳細には、本明細書において説明される実施形態は、概して、単一命令複数データ（ＳＩＭＤ）アーキテクチャを有するプロセッサに関する。
【背景技術】
【０００２】
［背景情報］
多くのプロセッサは、単一命令複数データ（ＳＩＭＤ）アーキテクチャを有する。ＳＩＭＤアーキテクチャにおいて、複数のデータエレメントは、１つのレジスタ又はメモリ位置内で、パックドデータ又はＳＩＭＤデータとしてパックされ得る。パックドデータ又はＳＩＭＤデータにおいて、レジスタ又はメモリ位置のビットは、論理的には、一連のデータエレメントに分割され得る。例えば、１２８ビット幅のパックドデータレジスタは、２つの６４ビットデータエレメント、４つの３２ビットデータエレメント、８つの１６ビットデータエレメント、又は１６の８ビットデータエレメントを有してよい。パックドデータ又はＳＩＭＤ命令は、パックドデータ又はＳＩＭＤデータの複数のデータエレメント、又は対応データエレメントの複数のペアに対して、同時にかつ並列に動作するために用いられてよい。プロセッサは、パックドデータ又はＳＩＭＤデータに対して同時にかつ並列に動作するように、パックドデータ又はＳＩＭＤ命令に応答可能な並列又はＳＩＭＤ実行ロジック（例えば、１つ又は複数のＳＩＭＤ実行ユニット）を有してよい。
【図面の簡単な説明】
【０００３】
本発明は、実施形態を示すために用いられる以下の説明及び添付図面を参照することによって、最も良く理解されよう。図面において、
【図１】パックドデータアライメントプラス演算命令の実施形態を実行するように動作可能なプロセッサの実施形態のブロック図である。
【図２】パックドデータアライメントプラス演算命令の実施形態を実行する方法の実施形態のブロックフロー図である。
【図３】パックドデータアライメントプラス演算オペレーションの第１の実施形態を示すブロック図である。
【図４】パックドデータアライメントプラス演算オペレーションの実施形態を実行するように動作可能な実行ユニットの例示的実施形態のブロック図である。
【図５】パックドデータアライメントプラス演算オペレーションの第２の実施形態を示すブロック図である。
【図６】パックドデータアライメントプラス演算オペレーションの第３の実施形態を示すブロック図である。
【図７】本発明の実施形態の実装に好適なプロセッサの詳細な例示的実施形態のブロック図である。
【図８Ａ】インオーダパイプラインの実施形態及びレジスタリネーミングアウトオブオーダ発行／実行パイプラインの実施形態を示すブロック図である。
【図８Ｂ】実行エンジンユニットに結合されたフロントエンドユニットを含み、この両方がメモリユニットに結合されたプロセッサコアの実施形態のブロック図である。
【図９Ａ】シングルプロセッサコアの実施形態のブロック図であり、そのオンダイ相互接続ネットワークへの接続、及びそのレベル２（Ｌ２）キャッシュのローカルサブセットと共に示す。
【図９Ｂ】図９Ａのプロセッサコアの一部の拡大図の実施形態のブロック図である。
【図１０】１つより多くのコア、統合メモリコントローラ、及び統合グラフィクスを有し得るプロセッサの実施形態のブロック図である。
【図１１】コンピュータアーキテクチャの第１の実施形態のブロック図である。
【図１２】コンピュータアーキテクチャの第２の実施形態のブロック図である。
【図１３】コンピュータアーキテクチャの第３の実施形態のブロック図である。
【図１４】コンピュータアーキテクチャの第４の実施形態のブロック図である。
【図１５】本発明の実施形態に係るソース命令セットにおけるバイナリ命令をターゲット命令セットにおけるバイナリ命令に変換するソフトウェア命令コンバータの利用のブロック図である。
【発明を実施するための形態】
【０００４】
本明細書において、パックドデータアライメントプラス演算命令、命令を実行するプロセッサ、命令を処理又は実行する場合にプロセッサによって実行される方法、及び命令を処理又は実行する１つ又は複数のプロセッサを組み込んだシステムが開示される。以下の説明において、多数の具体的な詳細が示される（例えば、具体的な命令オペレーション、データフォーマット、プロセッサ構成、マイクロアーキテクチャの詳細、オペレーションの順序等）。しかしながら、実施形態は、これらの具体的な詳細がなくとも実施可能である。他の例において、周知の回路、構造及び技術は、説明の理解の妨げとなることを回避すべく、詳細には示されていない。
【０００５】
いくつかの実施形態において、パックドデータアライメントプラス演算命令は、ＳＩＭＤアーキテクチャを有するプロセッサにおいて実行されてよい。ＳＩＭＤアーキテクチャにおいて、並列又はＳＩＭＤ実行ロジック（例えば、１つ又は複数のＳＩＭＤ実行ユニット）は、概して、互いに特定のデータエレメントアライメントを有するパックドデータ又はＳＩＭＤデータのデータエレメントに対して、オペレーションを実行するように設計される。例として、ＳＩＭＤ加算器ユニットは、第１及び第２のソースパックドデータの同じ相対的データエレメント位置にある対応データエレメントを、加算するように設計されてよい。同様に、多種多様な他のタイプのＳＩＭＤ実行ユニット（例えば、ＳＩＭＤ乗算ユニット、ＳＩＭＤ比較ユニット、ＳＩＭＤシフトユニット等）は、第１及び第２のソースパックドデータの同じ相対的データエレメント位置にある対応データエレメントに対して動作するように設計されてよい。対応データエレメントに対するこのようなオペレーションは、「垂直」ＳＩＭＤオペレーションと称される場合がある。
【０００６】
他のＳＩＭＤ実行ユニットは、対応データエレメントのみに対する動作、及び／又は「垂直」ＳＩＭＤオペレーションのみの実行に限定されるものではない。むしろ、いくつかのＳＩＭＤ実行ユニットは、非対応データエレメントに対して動作してよい。一例として、複合的な乗算命令を実行する実行ユニットは、対応データエレメント及び非対応データエレメント（例えば、対角線のデータエレメント）の両方を乗算し、乗算された積を組み合わせるように動作可能であってよい。しかしながら、ＳＩＭＤ実行ユニットは、典型的には、特定の固定かつ非柔軟な相対的データエレメントアライメントを有するソースパックドデータのデータエレメントに対して動作するように設計される。本明細書において開示されるパックドデータアライメントプラス演算命令がなくとも、特定の固定かつ非柔軟な相対的データエレメントアライメントをまだ示していないデータエレメントに対して動作することが望ましい場合には、典型的には、ＳＩＭＤ実行ユニットが所望のデータエレメントに対して動作可能となる前に、１つ又は複数のパックドデータアライメントオペレーションが実行される必要がある。例えば、他の命令が実行され、第１のソースパックドデータオペランドの移動又はアライメントされたデータエレメントに対してオペレーションを実行する前に、最初のシフト、回転、シフト−マージ、又は他のパックドデータアライメント命令が第１のソースパックドデータオペランドに対して実行され、第１のソースパックドデータオペランドのデータエレメントを移動させ又はアライメントしてよい。
【０００７】
しかしながら、１つ又は複数の別個のパックドデータアライメント命令を実行する必要は、１つ又は複数の欠点を有する傾向があり得る。１つのあり得る欠点は、１つ又は複数のパックドデータアライメント命令が、追加の実行時間（例えば、１つ又は複数のクロックサイクル）を費やす傾向があり得る、及び／又は追加のリソース（例えば、フェッチユニット、デコーダ、実行ユニット等）を用いる傾向があり得る別個の命令であり、これにより、電力消費が増加することである。他のあり得る欠点は、パックドデータアライメント命令が、典型的には、これらの結果をアーキテクチャレジスタ（例えば、パックドデータレジスタ）に戻して格納することで、レジスタが、他のデータを格納するために利用不可能となり得ることである。有利には、本明細書において開示されるパックドデータアライメントプラス演算命令は、パックドデータアライメントオペレーション及び演算オペレーションの両方を、同じ単一命令の性能の制約内で、組み合わせてよい。これは、別個のパックドデータアライメント及び演算命令を実行する必要を回避する助けとなることがあり、これにより、概して、性能向上、アーキテクチャレジスタの利用可能性向上等の助けとなることがある。
【０００８】
図１は、パックドデータアライメントプラス演算命令１０２の実施形態を実行するように動作可能なプロセッサ１００の実施形態のブロック図である。いくつかの実施形態において、プロセッサは、汎用プロセッサ（例えば、デスクトップ、ラップトップ、又は他のコンピュータにおいて用いられるタイプの汎用マイクロプロセッサ又は中央処理装置（ＣＰＵ））であってよい。あるいは、プロセッサは、特定用途向けプロセッサであってよい。好適な特定用途向けプロセッサの例は、限定されるものではないが、デジタル信号プロセッサ（ＤＳＰ）、画像プロセッサ、グラフィクスプロセッサ、ネットワークプロセッサ、通信プロセッサ、暗号プロセッサ、コプロセッサ、埋め込みプロセッサ、及びコントローラ（例えば、マイクロコントローラ）を含む。プロセッサは、様々な複合命令セットコンピューティング（ＣＩＳＣ）アーキテクチャ、縮小命令セットコンピューティング（ＲＩＳＣ）アーキテクチャ、超長命令語（ＶＬＩＷ）アーキテクチャ、ハイブリッドアーキテクチャ、他のタイプのアーキテクチャのいずれかを有してよく、又は異なるアーキテクチャの組み合わせを有してよい（例えば、異なるコアは、異なるアーキテクチャを有してよい）。具体的な一例示的実施形態において、プロセッサは、画像プロセッサユニットとして用いられるＤＳＰであってよいが、本発明の範囲は、このように限定されるものではない。
【０００９】
オペレーション中に、プロセッサ１００は、パックドデータアライメントプラス演算命令１０２を受信してよい。例えば、命令は、バス又は他の相互接続を介して、メモリから受信されてよい。命令は、マクロ命令、アセンブリ語命令、機械コード命令、もしくは他の命令又はプロセッサの命令セットの制御信号を表してよい。いくつかの実施形態において、パックドデータアライメントプラス演算命令は、（例えば、１つ又は複数のフィールド又はビットのセットを通して）第１の複数のデータエレメント（例えば、図示される例において、データエレメントＡ１からＡ４と符号を付された）を含む１つ又は複数のソースパックドデータオペランドの第１のセット１１２を明示的に規定もしくは示し（例えば、暗示的に示し）てよく、第２の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第２のセット（例えば、図示される例において、データエレメントＢ１からＢ８と符号を付された）を明示的に規定もしくは示してよく、結果パックドデータオペランド１２０が格納されるデスティネーション格納位置１１８を明示的に規定もしくは示してよい。一例として、命令は、オペランドのレジスタ、メモリ位置、又は他の格納位置を明示的に規定するソース及び／又はデスティネーションオペランド規定フィールドを有してよい。あるいは、これらのオペランドの１つ又は複数は、任意選択的に、明示的に表されず、命令によって暗示又は黙示（例えば、命令のオペコードによって暗示又は黙示）されてよい。例えば、プロセッサは、オペコードに基づいて、これらのオペランドの１つのために用いられる具体的な固定レジスタ又は他の格納位置を理解してよい。一態様において、ソースオペランドのデータは、入力／出力デバイス（例えば、ネットワークインタフェース、デジタル画像取得デバイス、ビデオ入力デバイス、無線インタフェース、オーディオ入力デバイス等）から受信されていてよいが、これは、必須ではない。
【００１０】
図示されるように、いくつかの実施形態において、パックドデータアライメントプラス演算命令は、少なくとも１つのデータエレメントオフセット１２２を明示的に規定又は示してもよい。さらに後述されるように、少なくとも１つのデータエレメントオフセットは、ソースパックドデータオペランドの第１及び第２のセットにおいて、ソースパックドデータオペランドをアライメントするパックドデータアライメントオペレーションを実行するために用いられてよい。少なくとも１つのデータエレメントオフセットは、異なる実施形態における様々な異なるタイプのオフセットを表してよい。好適なオフセットの例は、限定されるものではないが、ほんの数例を挙げると、データエレメント数の規定又は指示、（例えば、データエレメントサイズインクリメントにおける）ビット数の規定又は指示、予め定められた数のデータエレメントの１つの選択、（例えば、データエレメントサイズインクリメントにおける）予め定められた数のビットの１つの選択、（例えば、データエレメントサイズインクリメントにおける）データエレメント又はビットにおける回転量の規定又は指示、及び（例えば、データエレメントサイズインクリメントにおける）データエレメント又はビットにおける規定又は指示されたシフト量を含む。図示されるように、いくつかの実施形態において、少なくとも１つのデータエレメントオフセットは、任意選択的に、汎用レジスタ又は他のスカラレジスタ１２４に格納されてよい。あるいは、命令の即値は、任意選択的に、少なくとも１つのデータエレメントオフセットを提供するために用いられてよく、又は、このようなアプローチの組み合わせが、任意選択的に用いられてよい。有利には、このような実施形態は、命令が柔軟かつ可変のオフセットを示すことを可能とする。（例えば、一態様において、オフセットは、４、−３、−２、−１、０、１、２、３、又は４のデータエレメントオフセット位置のいずれか１つであってよい。ここで、負の整数（例えば、−２）は、１つの方向におけるオフセットを示すために用いられ、負ではない整数（例えば、２）は、反対方向におけるオフセットを示すために用いられる）。さらに他の実施形態において、固定オフセットは、任意選択的に、命令の非オペコードフィールドを通して柔軟又は可変的に示されるのではなく、命令（例えば、これらのオペコード）に暗示されてよい。
【００１１】
図１を再度参照すると、プロセッサは、デコードユニット又はデコーダ１０４を含む。デコードユニットは、パックドデータアライメントプラス演算命令を受信及びデコードしてよい。デコードユニットは、１つ又は複数の相対的により低レベルの命令又は制御信号（例えば、１つ又は複数のマイクロ命令、マイクロオペレーション、マイクロコードエントリポイント、デコードされた命令又は制御信号等）を出力してよい。これらは、相対的により高レベルのパックドデータアライメントプラス演算命令を反映し、表し、及び／又はこれから導出される。いくつかの実施形態において、デコードユニットは、パックドデータアライメントプラス演算命令を受信する１つ又は複数の入力構造（例えば、ポート、相互接続、インタフェース）、これに結合された、パックドデータアライメントプラス演算命令を認識及びデコードする命令認識及びデコードロジック、ならびにこれに結合された、より低レベルの命令又は制御信号を出力する１つ又は複数の出力構造（例えば、ポート、相互接続、インタフェース）を含んでよい。デコードユニットは、限定されるものではないが、マイクロコードリードオンリメモリ（ＲＯＭ）、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ（ＰＬＡ）、及びデコードユニットの実装に好適な他のメカニズムを含む、様々な異なるメカニズムを用いて実装されてよい。
【００１２】
いくつかの実施形態において、パックドデータアライメントプラス演算命令がデコードユニットに直接提供される代わりに、命令エミュレータ、トランスレータ、モーファ、インタープリタ、又は他の命令変換モジュールが、任意選択的に用いられてよい。様々なタイプの命令変換モジュールが、ソフトウェア、ハードウェア、ファームウェア、又はこれらの組み合わせで実装されてよい。いくつかの実施形態において、命令変換モジュールは、例えば、別個のダイ上及び／又はメモリ内（例えば、静的、動的、もしくはランタイムエミュレーションモジュール）のような、プロセッサ外部に配置されてよい。例として、命令変換モジュールは、第１の命令セットに含まれ得るパックドデータアライメントプラス演算命令を受信してよく、パックドデータアライメントプラス演算命令を、第２の異なる命令セットに含まれ得る１つ又は複数の対応する中間命令又は制御信号にエミュレート、トランスレート、モーフィング、解釈、又は変換してよい。第２の命令セットの１つ又は複数の中間命令又は制御信号は、プロセッサのネイティブハードウェア（例えば、１つ又は複数の実行ユニット）によって実行可能な１つ又は複数のより低レベルの命令又は制御信号にこれらをデコードし得るデコードユニット（例えば、デコードユニット１０４）に提供されてよい。
【００１３】
図１を再度参照すると、プロセッサ１００は、パックドデータレジスタ１０８のセットをさらに含む。パックドデータレジスタの各々は、パックドデータ又はＳＩＭＤデータを格納するように動作可能なオンダイストレージ位置を表してよい。パックドデータ又はＳＩＭＤデータは、「空間」ＳＩＭＤを示してよく、ここで、エレメントは、バス又は他の相互接続を介して共に受信され、キャリーチェーンの中断がデータエレメント間に存在し得るパックドデータ又はＳＩＭＤデータとして、レジスタに共に格納されてよい、等である。パックドデータレジスタは、アーキテクチャ的に可視な、又はソフトウェア及び／又はプログラマに可視なアーキテクチャレジスタを表してよく、及び／又は、オペランドを特定するプロセッサの命令セットの命令によって示されるレジスタである。これらのアーキテクチャレジスタは、所与のマイクロアーキテクチャの他の非アーキテクチャレジスタ（例えば、テンポラリレジスタ、リオーダバッファ、リタイアメントレジスタ等）と対比される。パックドデータレジスタは、異なる態様で、異なるマイクロアーキテクチャで実装されてよく、特定のタイプの設計に限定されるものではない。好適なタイプのレジスタの例は、限定されるものではないが、専用物理レジスタ、レジスタリネーミングを用いて動的に割り当てられる物理レジスタ、及びこれらの組み合わせを含む。
【００１４】
いくつかの実施形態において、１つ又は複数のソースパックドデータオペランドの第１のセット１１２は、任意選択的に、１つ又は複数のパックドデータレジスタ１１０の第１のセットに格納されてよく（例えば、単一のレジスタが、単一のオペランドを格納するために用いられてよく、又は、異なるパックドデータレジスタが、２つの異なるオペランドの各々を格納するために用いられてよい）、１つ又は複数のソースパックドデータオペランドの第２のセット１１６は、任意選択的に、１つ又は複数のパックドデータレジスタ１１４の第２のセットに格納されてよい（例えば、単一のレジスタが、単一のオペランドを格納するために用いられてよく、又は、異なるパックドデータレジスタが、２つの異なるオペランドの各々を格納するために用いられてよい）。いくつかの実施形態において、デスティネーション格納位置１１８は、任意選択的に、第３のパックドデータレジスタであってよい。あるいは、メモリ位置、又は他の格納位置は、任意選択的に、これらのオペランドの１つ又は複数のために用いられてよい。さらに、いくつかの実施形態において、ソースパックドデータオペランドの１つのために用いられるソース／デスティネーションパックドデータレジスタは、任意選択的に、結果パックドデータオペランドを格納するためのデスティネーション格納位置として、再利用されてよい。例えば、命令は、ソース／デスティネーションレジスタを規定してよく、プロセッサは、ソース／デスティネーションレジスタが最初にソースオペランドを取得するために用いられること、及び、次いでひき続き、結果オペランドがソース／デスティネーションレジスタに格納され、ソースオペランドを上書きすることを、暗示的又は黙示的に理解してよい。さらに、いくつかの実施形態において、命令は、１つ又は複数のソースパックドデータオペランドの１セットだけを示してよい（例えば、セット１１２を示すが、セット１１６を示さない）。
【００１５】
図１を再度参照すると、実行ユニット１０６は、デコードユニット１０４に結合される。実行ユニットは、パックドデータアライメントプラス演算命令を表す、及び／又はこれから導出される、１つ又は複数のデコード又は変換された命令又は制御信号を受信してよい。実行ユニットは、例えば、パックドデータレジスタ１０８に結合されることによって、ソースパックドデータオペランドの第１及び第２のセット１１２、１１６にも結合される。実行ユニットは、ソースパックドデータオペランドの第１及び第２のセットを受信してよい。実行ユニットは、パックドデータアライメントプラス演算命令に応答して、及び／又はその結果として（例えば、これからデコードされた１つ又は複数の命令もしくは制御信号に応答して）、命令によって示されるデスティネーション格納位置１１８に、結果パックドデータオペランド１２０を格納するように動作可能である。
【００１６】
いくつかの実施形態において、結果パックドデータオペランドは、複数の結果データエレメント（例えば、図示される例において、データエレメントＲ１からＲ４と符号を付されている）を含んでよい。いくつかの実施形態において、結果データエレメントの各々は、ソースパックドデータオペランドの第１のセット１１２におけるデータエレメント及びソースパックドデータオペランドの第２のセット１１６におけるデータエレメントのペアにより実行されたオペレーションの値を有してよい。例えば、図示される例示的実施形態において示されるように、Ｒ１は、ソースパックドデータオペランドの第１のセットにおけるデータエレメントＡ１及びソースパックドデータオペランドの第２のセットにおける非対応データエレメントＢ４のペアにより実行されたオペレーション（ＯＰ）の値を有してよい。同様に、Ｒ２は、Ａ２及びＢ５により実行されたオペレーション（ＯＰ）の値を有してよく、Ｒ３は、Ａ３及びＢ６により実行されたオペレーション（ＯＰ）の値を有してよく、Ｒ４は、Ａ４及びＢ７により実行されたオペレーション（ＯＰ）の値を有してよい。これは、オペランド１１６に適用された３のデータエレメント位置の例示的なオフセットに関する１つの説明例に過ぎない。
【００１７】
いくつかの実施形態において、例えば、少なくとも１つのデータエレメントオフセットが、集合的又は累積的に、少なくとも１つの０以外のデータエレメントオフセットになる場合、各ペアにおけるデータエレメントは、ソースオペランドにおける非対応データエレメントであってよい。例えば、Ａ１及びＢ４は、ソースパックドデータオペランドの第１及び第２のセットにおいて非対応データエレメント位置にある（すなわち、ソースパックドデータオペランドの第１及び第２のセットにおいて、Ａ１は、Ｂ１と対応データエレメント位置にあるが、Ｂ４とは当該位置にない）。同様に、Ａ２及びＢ５、Ａ３及びＢ６、ならびにＡ４及びＢ７は、各々、ソースパックドデータオペランドの第１及び第２のセットにおいて非対応データエレメント位置にある。
【００１８】
実行ユニットは、少なくとも１つのデータエレメントオフセットを、ソースパックドデータオペランドの第１及び第２のセットのうち少なくとも対応する１つに適用してよく、少なくとも１つのデータエレメントオフセットは、ソースパックドデータオペランドの第１及び第２のセットにおける各ペアのデータエレメント間の対応関係のあらゆる欠如を打ち消し、除去し、キャンセルし、又はこれに対抗してよい。少なくとも１つのデータエレメントオフセットをソースパックドデータオペランドの第１及び第２のセットの少なくとも１つに適用することは、各ペアのデータエレメントに対応関係（例えば、同じ相対的データエレメント位置）を持たせ、又は、実行ユニット内の中間もしくはマイクロアーキテクチャレジスタもしくは回路において、これらをアライメントしてよい。いくつかの実施形態において、非対応データエレメント位置は、パックドデータアライメントプラス演算命令によって示される少なくとも１つのデータエレメントオフセットに基づいて、異なってよい。単一の０以外のオフセットの場合、非対応データエレメントは、０以外のオフセットだけ異なってよい。例えば、図示される例示的実施形態において、非対応データエレメント位置は、３のデータエレメント位置だけ異なる。例えば、Ｂ４は、Ａ１との対応データエレメント位置に位置し得るように、図中左に３のデータエレメント位置だけ、回転、シフト、もしくは移動させられ、又はオフセットされてよい（実装に応じて、最下位又は最上位ビット位置のいずれかに向かってよい）。いくつかの実施形態において、（この具体例における）この３のデータエレメント位置の差は、３のデータエレメント位置の単一のデータエレメントオフセットに等しくてよい。他の実施形態において、２つのオフセットの場合、非対応データエレメントは、２つのオフセットの組み合わせ又は２つのオフセットの適用によって、又はこれに基づいて、異なってよい。例えば、（この具体例における）図示される３のデータエレメント位置の差は、１つ又は複数のソースパックドデータオペランドの第１のセットに適用される第１のデータエレメントオフセットと、１つ又は複数のソースパックドデータオペランドの第２のセットに適用される第２のデータエレメントオフセットとの間の差に等しくてよい。例として、図において、Ａ１は、パックドデータオペランドの第１のセットに適用される０のデータエレメントオフセット、及びパックドデータオペランドの第２のセットに適用される３のデータエレメントオフセットにより実行され得る、移動がなされたものとして示されていない。他の実施形態において、非対応データエレメント位置は、例えば、マイナス４のデータエレメント位置と４のデータエレメント位置との間（すなわち、−４、−３、−２、−１、０、１、２、３、４）の差、マイナス２のデータエレメント位置と２のデータエレメント位置との間（例えば、−２、−１、０、１、２）の差、０のデータエレメント位置と４のデータエレメント位置との間（すなわち、０、１、２、３、４）の差、０のデータエレメント位置と２のデータエレメント位置との間（すなわち、０、１、２）の差、０のデータエレメント位置と１のデータエレメント位置との間の差、マイナス６のデータエレメント位置と６のデータエレメント位置との間の差、０のデータエレメント位置と６のデータエレメント位置との間の差、等のような、正又は負のデータエレメントオフセットの間における他の差に基づいて、異なってよい。
【００１９】
図示される実施形態において、ソース及び結果オペランドの具体例が図示及び説明されたが、本発明の範囲は、このように限定されるものではない。図示される例示的実施形態において、ソースパックドデータオペランドの第１のセットは、任意選択的に、少なくとも４つのデータエレメントを有し、ソースパックドデータオペランドの第２のセットは、任意選択的に、８つのデータエレメントを有し、結果パックドデータオペランドは、任意選択的に、４つのデータエレメントを有するが、他の実施形態において、より少ない又はより多くのデータエレメントが、任意選択的に、これらのオペランドのために用いられてよい。１つの他の説明例として、ソースパックドデータオペランドの第１及び第２のセットの各々は、任意選択的に、６４のデータエレメントを有してよく、結果パックドデータオペランドは、任意選択的に、その半数又は３２のデータエレメントを有してよい。他の実施形態において、本明細書において開示される他の数のデータエレメントも、好適である。また、図示を容易化すべく、結果データエレメントは、物理的にソースデータエレメントより大きいが、結果データエレメントは、ソースデータエレメントと同じ又は異なる数のビットを有してよい。さらに、ソースパックドデータオペランドの第１及び第２のセットのデータエレメントは、同じ又は異なる数のビットを有してよい。いくつかの実施形態において、結果パックドデータオペランドは、変形及びこれらの代替的な実施形態を含む、図３−６のいずれかに関して図示及び説明されるもののいずれかであってよい。
【００２０】
実行ユニット及び／又はプロセッサは、パックドデータアライメントプラス演算命令を実行し、及び／又は、パックドデータアライメントプラス演算命令に応答して、及び／又はその結果として（例えば、パックドデータアライメントプラス演算命令からデコードされた１つ又は複数の命令もしくは制御信号に応答して）、結果を格納するように動作可能な特有又は特定のロジック（例えば、トランジスタ、集積回路、又はファームウェア（例えば、不揮発性メモリに格納された命令）と組み合わせられる可能性のある他のハードウェア及び／又はソフトウェア）を含んでよい。いくつかの実施形態において、実行ユニットは、ソースオペランドを受信する１つ又は複数の入力構造（例えば、ポート、相互接続、インタフェース）、ソースオペランドに対して算術オペレーションを実行するパックドデータアライメント回路又はロジック（例えば、シフト又は回転回路又はロジック）、アライメントされた中間オペランドに対して算術又は論理オペレーションを実行して結果オペランドを生成する、これらに結合された算術又は論理オペレーション回路又はロジック、及び結果オペランドを出力する、これらに結合された１つ又は複数の出力構造（例えば、ポート、相互接続、インタフェース）を含んでよい。いくつかの実施形態において、実行ユニットは、図４に関して図示及び説明される回路又はロジック、又はこれらの変形もしくは代替を含んでよい。これらは、好適なマイクロアーキテクチャ構成の説明例であるが、本発明の範囲は、このように限定されるものではない。いくつかの実施形態において、実行ユニットは、デジタル信号プロセッサの画像プロセッサユニットに含まれ、画像の画素を処理するために用いられてよいが、本発明の範囲は、このように限定されるものではない。
【００２１】
説明の妨げとなることを回避すべく、比較的単純なプロセッサ１００が、図示及び説明されている。しかしながら、プロセッサは、任意選択的に、他のプロセッサコンポーネントを含んでよい。例えば、様々な異なる実施形態は、図７及び／又は図８Ａ−１０のいずれかに関して図示及び説明されるコンポーネントの様々な異なる組み合わせ及び構成を含んでよい。プロセッサのコンポーネントの全ては、共に結合され、これらが意図されたように動作することを可能としてよい。
【００２２】
図２は、パックドデータアライメントプラス演算命令の実施形態を実行する方法２３０の実施形態のブロックフロー図である。様々な実施形態において、方法は、プロセッサ、命令処理装置、又は他のデジタルロジックデバイスによって実行されてよい。いくつかの実施形態において、図２の方法は、図１のプロセッサによって、及び／又はその内部で実行されてよい。図１のプロセッサに関して本明細書において説明されたコンポーネント、機能、及び具体的かつ任意選択的な詳細は、任意選択的に、図２の方法にも適用される。あるいは、図２の方法は、異なるプロセッサ又は装置によって、及び／又はその内部で実行されてよい。さらに、図１のプロセッサは、図２のものと異なる方法を実行してよい。
【００２３】
方法は、ブロック２３１において、パックドデータアライメントプラス演算命令を受信する段階を含む。様々な態様において、命令は、プロセッサ又はその一部（例えば、命令フェッチユニット、デコードユニット、バスインタフェースユニット等）において、受信されてよい。様々な態様において、命令は、オフプロセッサ及び／又はオフダイソースから（例えば、メモリ、相互接続等から）、又はオンプロセッサ及び／又はオンダイソースから（例えば、命令キャッシュ、命令キュー等から）、受信されてよい。パックドデータアライメントプラス演算命令は、第１の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第１のセットを規定又は示してよく、第２の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第２のセットを規定又は示してよく、少なくとも１つのデータエレメントオフセットを規定又は示してよく、デスティネーション格納位置を規定又は示してよい。
【００２４】
結果パックドデータオペランドは、ブロック２３２において、パックドデータアライメントプラス演算命令に応答して、及び／又はその結果として、デスティネーション格納位置に格納されてよい。結果パックドデータオペランドは、複数の結果データエレメントを含んでよい。いくつかの実施形態において、結果データエレメントの各々は、ソースパックドデータオペランドの第１のセットにおけるデータエレメント及びソースパックドデータオペランドの第２のセットにおける非対応データエレメントのペアにより実行されたオペレーションの値を有してよい。いくつかの実施形態において、各ペアの非対応データエレメントは、ソースパックドデータオペランドの第１及び第２のセットにおける非対応データエレメント位置にあった。いくつかの実施形態において、非対応データエレメント位置は、パックドデータアライメントプラス演算命令によって示される少なくとも１つのデータエレメントオフセットに基づいて、異なっていた。いくつかの実施形態において、方法は、デジタル信号プロセッサによる画像処理中の画素フィルタリング中に実行されてよいが、本発明の範囲は、このように限定されるものではない。
【００２５】
図示される方法は、アーキテクチャオペレーション（例えば、ソフトウェアの視点から可視のもの）を含む。他の実施形態において、方法は、任意選択的に、１つ又は複数のマイクロアーキテクチャオペレーションを含んでよい。例として、命令は、フェッチ、デコード、アウトオブオーダスケジューリングされてよく、ソースオペランドは、アクセスされてよく、実行ユニットは、命令（例えば、少なくとも１つのオフセットに基づいて、データエレメントをシフト、回転、又は移動させること）を実装するマイクロアーキテクチャオペレーションを実行してよい、等である。
【００２６】
図３は、パックドデータアライメントプラス演算命令３０２の第１の例示的実施形態に応答して実行され得るパックドデータアライメントプラス演算オペレーション３４８の第１の例示的実施形態を示すブロック図である。命令は、オペレーションコード又はオペコード３３６を含む。オペコードは、命令及び／又は実行されるオペレーション（例えば、パックドデータアライメント及び特定のタイプの演算オペレーション（例えば、平均、乗算、加算、シフト等））を特定するように動作可能な複数のビット又は１つ又は複数のフィールドを表してよい。
【００２７】
命令は、任意選択的に、第１のソースパックドデータオペランド３１２−１を規定する第１のソース規定フィールド（ＳＲＣ１）３３８、及び第２のソースパックドデータオペランド３１２−２を規定する第２のソース規定フィールド（ＳＲＣ２）３４０をさらに含む。第１及び第２のソースパックドデータオペランドは、ソースパックドデータオペランドの第１のセットを表す。命令は、任意選択的に、第３のソースパックドデータオペランド３１６−１を規定する第３のソース規定フィールド（ＳＲＣ３）３４２、第４のソースパックドデータオペランド３１６−２を規定する第４のソース規定フィールド（ＳＲＣ４）３４４をさらに含む。第３及び第４のソースパックドデータオペランドは、ソースパックドデータオペランドの第２のセットを表す。命令は、任意選択的に、結果パックドデータオペランド３２０が格納されるデスティネーション格納位置を規定するデスティネーション規定フィールド（ＤＥＳＴ）３４６をさらに含む。
【００２８】
例として、ソース及びデスティネーション規定フィールドの各々は、関連付けられたオペランドを格納するレジスタ、メモリ位置、又は他の格納位置のアドレスを明示的に規定する（必ずではないが、しばしば連続的な）ビットを含んでよい。あるいは、他の実施形態において、規定フィールドのいずれかは、任意選択的に省略されてよく、レジスタ又は他の格納位置は、任意選択的に、命令に暗示され、又はこれによって黙示されてよい。例えば、オペコードをデコードする際に、オペランドの１つに対して固定のレジスタを用いることは、（明示的に表されてはいないものの）既定のこと、又は、そのように理解されてよい。他の例として、デスティネーション規定フィールドを有する代わりに、ソース規定フィールドの１つが、ソース／デスティネーションレジスタを規定するソース／デスティネーション規定フィールドを表してよい。ソースパックドデータオペランドは、最初に、ソース／デスティネーションレジスタに格納されてよく、次に、暗示的に又は既定のこととして、ソース／デスティネーションレジスタを再利用し、最初のソースパックドデータオペランドを介して、結果パックドデータオペランドを格納してよい。
【００２９】
命令は、少なくとも１つのデータエレメントオフセットも示してよい。図示される例示的実施形態において、命令は、ソースパックドデータオペランドの第１のセット（本実施形態におけるオペランド３１２−１、３１２−２）に対応する、これに適用される第１のオフセットを規定又は示す第１のオフセット規定フィールド３２２−１、及びソースパックドデータオペランドの第２のセット（本実施形態におけるオペランド３１６−１、３１６−２）に対応する、これに適用される任意選択的な第２のオフセットを規定又は示す任意選択的な第２のオフセット規定フィールド３２２−２を有する。いくつかの実施形態において、これらのオフセット規定フィールドの各々のビットは、オフセットの値が格納されるレジスタ（例えば、汎用レジスタ又は他のスカラレジスタ）又は他の格納位置を規定又は示してよい。他の実施形態において、これらのオフセット規定フィールドの各々のビットは、オフセットの値を規定し、又はオフセットの値を符号化もしくは示し（例えば、複数の予め定められたオフセットの間に選択する値を有し）てよい。いくつかの実施形態において、命令の即値は、任意選択的に、第１のオフセット及び任意選択的な第２のオフセットを有してよい。アプローチを組み合わせることも、好適である。
【００３０】
図示される例示的実施形態において、第１のオフセットは、１のデータエレメント位置のオフセットを示し、第２のオフセットは、２のデータエレメント位置のオフセットを示すが、これは、１つの説明例に過ぎない。他の実施形態において、第１及び第２のオフセットの各々は、−８、−７、−６、−５、−４、−３、−２、−１、０、１、２、３、４、５、７、又は８のデータエレメント位置のいずれかであってよい。より少ない又はより多くのデータエレメントオフセットが、任意選択的に、他の実施形態においてサポートされてよい。他の実施形態において、命令は、単一のオフセットを提供する単一のオフセット規定フィールドのみを有してよい。さらに、他の実施形態において、１つ又は複数のオフセットは、任意選択的に、命令（例えば、オペコード）に暗示され又は既定であってよく、非柔軟又は固定であってよい。パックドデータアライメントプラス演算命令の他の実施形態は、任意選択的に、説明されたフィールドのいくつかを省略し、さらなるフィールドを追加（例えば、特定のタイプのオペレーション（例えば、シフト量を提供する、飽和演算が実行されるか否かを示す、等）に関連付けられたフィールドを追加）してよく、命令内において、フィールドを多様に再変更してよい。
【００３１】
図において、ソースオペランドの好適なセットの例が示されるが、本発明の範囲は、これらの特定のソースオペランドに限定されるものではない。具体的には、第１のソースパックドデータオペランド３１２−１（例えば、ＳＲＣ１によって示される）は、４つのパックドデータエレメントＡ１−Ａ４を有し、第２のソースパックドデータオペランド３１２−２（例えば、ＳＲＣ２によって示される）は、４つのパックドデータエレメントＡ５−Ａ８を有する。同様に、第３のソースパックドデータオペランド３１６−１（例えば、ＳＲＣ３によって示される）は、４つのパックドデータエレメントＢ１−Ｂ４を有し、第４のソースパックドデータオペランド３１６−２（例えば、ＳＲＣ４によって示される）は、４つのパックドデータエレメントＢ５−Ｂ８を有する。他の実施形態においてソースパックドデータオペランドは、任意選択的に、異なる数のパックドデータエレメントを含んでよい。一般に、各ソースパックドデータオペランドにおけるデータエレメントの数は、単一のデータエレメントのビットサイズによって分割されたソースパックドデータオペランドのビットサイズに等しくてよい。様々な実施形態において、各ソースパックドデータオペランドは、６４ビット、１２８ビット、２５６ビット、５１２ビット、又は１０２４ビットであってよいが、本発明の範囲は、このように限定されるものではない。様々な実施形態において、各データエレメントは、８ビット、１６ビット、３２ビット、又は６４ビットであってよいが、本発明の範囲は、このように限定されるものではない。様々な実施形態において、４、８、１６、３２、又は６４のデータエレメントがオペランドの各々に存在してよいが、本発明の範囲は、このように限定されるものではない。オペランドが同数のデータエレメントを有することは必須ではない。一般に、オペランドにおけるデータエレメントの数は、２のべき乗の数であるが、これは、必須ではない。
【００３２】
図示される例示的実施形態において、最下位データエレメントは左側、最上位データエレメントは右側にあるが、反対の構成も可能である。第１のセットオペランド３１２−１、３１２−２及び第２のセットオペランド３１６−１、３１６−２において同じ相対的データエレメント位置にあるデータエレメントは、対応位置にある、及び／又は対応データエレメントである。例えば、Ａ１及びＢ１は、対応データエレメントであり、Ａ２及びＢ２は、対応データエレメントである、等である。対照的に、Ａ２及びＢ３は、非対応データエレメント位置にある、及び／又は、Ａ２及びＢ３は、非対応データエレメントである。さらに、第１及び第２のソースパックドデータオペランドは、Ａ７及びＢ７は対応するがＡ７及びＢ３は対応しない等となるように、Ａ５及びＢ５は対応するがＡ５及びＢ１は対応しないように、論理的に連結される又は共にあるものとみなされてよい。
【００３３】
パックドデータアライメントプラス演算オペレーション３４８は、パックドデータアライメントプラス演算命令３０２の実施形態に応答して実行されてよい。これは、ソースオペランドを、これらが関連付けられたレジスタ又は他の格納位置から取得又は受信し、これらを実行ユニット３０６に提供することを含んでよい。命令によって示される少なくとも１つのオフセット（本実施形態において、第１のオフセット及び任意選択的な第２のオフセット）も、実行ユニットに提供されてもよい。パックドデータアライメントプラス演算命令に応答可能な実行ユニットは、結果パックドデータオペランド３２０を生成し、これをデスティネーション格納位置（例えば、ＤＥＳＴによって示される）に格納するように動作可能であってよい。結果パックドデータオペランドは、複数の結果データエレメントを含んでよい。図示される例示的実施形態において、結果パックドデータオペランドは、４つの結果データエレメントを有するが、他の実施形態は、４つより少ない又はより多くの結果データエレメントを有してよい。いくつかの実施形態において、結果データエレメントの各々は、少なくとも、ソースパックドデータオペランドの第１のセット（例えば、オペランド３１２−１、３１２−２）におけるデータエレメント及びソースパックドデータオペランドの第２のセット（例えば、オペランド３１６−１、３１６−２）における非対応データエレメントのペアにより実行されたオペレーション（ＯＰ）の値を有してよい。ここで、各ペアの非対応データエレメントは、ソースパックドデータオペランドの第１及び第２のセットにおいて、非対応データエレメント位置にある。例えば、図示される例示的実施形態において、第１の結果データエレメントは、Ａ２及びＢ３に対して実行されたオペレーション（ＯＰ）の値を有してよく、第２の結果データエレメントは、Ａ３及びＢ４に対して実行されたオペレーション（ＯＰ）の値を有してよく、第３の結果データエレメントは、Ａ４及びＢ５に対して実行されたオペレーション（ＯＰ）の値を有してよく、第４の結果データエレメントは、Ａ５及びＢ６に対して実行されたオペレーション（ＯＰ）の値を有してよい。
【００３４】
いくつかの実施形態において、各ペアの非対応データエレメントは、ソースパックドデータオペランドの第１及び第２のセットにおいて、非対応データエレメント位置にあってよく、これらは、命令によって示される少なくとも１つのデータエレメントオフセット（例えば、第１のオフセット３２２−１及び第２のオフセット３２２−２）に基づいて異なる。非対応データエレメント位置は、実行ユニットが、パックドデータアライメントプラス演算命令に応答して、かつ、パックドデータアライメントプラス演算命令の性能の制約内において、非対応データエレメントを対応データエレメント位置に配置すべく、第１及び第２のオフセットをソースオペランドに適用するように動作可能となるような位置であってよい。例えば、Ｂ３は、１のデータエレメント位置の第１のオフセット３２２−１を第１及び第２のソースパックドデータオペランドに適用（例えば、これらの論理的連結）することによって、かつ、２のデータエレメント位置の第２のオフセット３２２−２を第３及び第４のソースパックドデータオペランドに適用（例えば、これらの論理的連結）することによって、Ａ２に対する対応データエレメント位置に（例えば、同じ相対的データエレメントビット位置に）オフセット又は移動させられてよい。図示される例示的実施形態において、第１のオフセットは、１のデータエレメント位置であり、第２のオフセットは、２のデータエレメント位置である。そこで、第１及び第２のオフセットの適用は、データエレメントの相対的位置を、集合的に１のデータエレメント位置だけオフセット又は移動させる。集合的に２つのオフセットは、実行ユニット内において、Ａ２及びＢ３を対応データエレメントとし、Ａ３及びＢ４を対応データエレメントとし、Ａ５及びＢ６を対応データエレメントとする等のように動作可能である。データエレメントオフセットは、例えば、シフト、回転、シフト−マージオペレーション等のような、異なる態様で、異なる実施形態において適用されてよい。Ａ２及びＢ３（等）は、概して、アーキテクチャ的に可視なパックドデータレジスタ内における対応データエレメントではなく、むしろ、パックドデータレジスタから一度アクセスされると、実行ユニット内部において、内部回路及び／又はテンポラリ／中間のアーキテクチャ的に不可視なレジスタ内における対応データエレメントとされることに留意されたい。
【００３５】
実行ユニットは、多種多様な異なるタイプのオペレーション（ＯＰ）のいずれかを、アライメントされたデータエレメントに対して実行するように動作可能であってよい。本発明の範囲は、このようなオペレーション（ＯＰ）のいずれかの公知の特定のタイプに限定されるものではない。好適なタイプのオペレーションの例は、限定されるものではないが、算術オペレーション（例えば、加算、減算、乗算、除算、乗加算、乗累算、ドット積等）、論理オペレーション（例えば、シフト、回転、論理ＡＮＤ、論理ＯＲ、論理ＸＯＲ、論理ＡＮＤ  ＮＯＴ等）、他のオペレーション（例えば、比較オペレーション、平方根、逆数平方根、ビットカウント、ビット反転、半値幅飽和演算等）、及びこれらの組み合わせを含む。いくつかの実施形態において、実行ユニットは、「垂直」ＳＩＭＤ演算オペレーション（例えば、実行ユニットの「垂直」ＳＩＭＤレーン又は部分）を、同じ相対的データエレメント位置にある対応データエレメントのみに対して実行してよいが、本発明の範囲は、このように限定されるものではない。例えば、実行ユニットは、パック加算、パック減算、パック乗算、パック除算、パック平均、パック半値幅飽和演算、パック平方根、パック逆数平方根、パックシフト、パック回転、パック論理ＡＮＤ、パック論理ＯＲ、パック論理ＸＯＲ、パック論理ＡＮＤ  ＮＯＴ、パック比較等を、ソースオペランドの第１及び第２のセットにおける対応データエレメントのみに対して実行してよい。
【００３６】
いくつかの実施形態において、実行ユニットは、対応データエレメント及び非対応データエレメントの組み合わせを含む垂直及び非垂直ＳＩＭＤ演算オペレーションの両方の組み合わせを実行してよい。一例として、実行ユニットは、対応及び非対応データエレメントの積の両方を加算することを含む複合乗算オペレーションを実行してよい。このようなより複雑な垂直プラス非垂直ＳＩＭＤオペレーションの様々な他の例も、好適である。いずれにしても、データエレメントの所望のセットに対してオペレーションを実行するために、データエレメントは、これらがあるべきものとして実行ユニットが期待した、又は設計された、意図された位置に、アライメントされている。有利には、アライメントオペレーションは、同じパックドデータアライメントを実現するために、多種多様な異なるタイプの既存の垂直及び／又は垂直及び非垂直ＳＩＭＤ実行ユニット又はロジックの再利用又は利用を、別個のパックドデータアライメント命令（例えば、シフトマージ命令）を実行する必要なく可能としてよい。具体的な例示的実施形態において、オペレーションは、乗算、加算、平均、及び乗累算の１つであってよいが、本発明の範囲は、このように限定されるものではない。
【００３７】
図４は、パックドデータアライメントプラス演算オペレーションの実施形態を実行するように動作可能な実行ユニットの例示的実施形態のブロック図である。実行ユニットは、本明細書において説明される異なるオペレーション（例えば、図３及び５−６のもの）を実行するために用いられてよい。実行ユニットは、第１のアライメントユニット４６０及び第２のアライメントユニット４６７を含む。実行ユニットは、垂直ＳＩＭＤ演算ユニット４６６をさらに含む。
【００３８】
第１のアライメントユニットは、図示される実施形態において、第１のソースパックドデータオペランド４１２−１及び第２のソースパックドデータオペランド４１２−２を含む、１つ又は複数のソースパックドデータオペランドの第１のセットを受信するように結合される。第１のアライメントユニットは、第１の連結及び回転ユニットＣＲ１、第２の連結及び回転ユニットＣＲ２、及び第３の連結及び回転ユニットＣＲ３を含む。ＣＲ１は、０のデータエレメント位置の最下位ビット位置に向けて（図では左向きに示されるが）右回転を実行し、０のデータエレメントオフセット中間オペランド４６１−０を出力するように動作可能である。０のデータエレメント位置だけ回転するので、ＣＲ１ユニットは、任意選択的に、より単純な連結ユニットに置換されてよい。ＣＲ２は、１のデータエレメント位置の最下位ビット位置に向けて右回転を実行し、１のデータエレメントオフセット中間オペランド４６１−１を出力するように動作可能である。ＣＲ３は、２のデータエレメント位置の最下位ビット位置に向けて右回転を実行し、２のデータエレメントオフセット中間オペランド４６１−２を出力するように動作可能である。中間オペランド４６１の各々は、第１のマルチプレクサ（ＭＵＸ）又は他のセレクタユニット４６４への入力として提供されてよい。他の実施形態において、追加の及び／又は異なる数のデータエレメント位置が、任意選択的にサポートされてよい。例えば、代替的な一実施形態において、５又は９の異なるデータエレメントオフセット中間オペランドが、任意選択的に生成され、セレクタユニットに入力されてよい。また、他の実施形態において、シフトが、任意選択的に、回転の代わりに用いられてよい。命令によって示される第１のデータエレメントオフセット４２２−１は、セレクタユニット４６４に入力されてよく、入力の１つを選択するために用いられてよい。本例示的実施形態において、第１のデータエレメントオフセットは、１のデータエレメント位置である。そこで、１のデータエレメントオフセット中間オペランド４６１−１が、第１の選択されたオペランド４６５として選択及び出力されてよい。
【００３９】
第２のアライメントユニット４６７は、図示される実施形態において、第３のソースパックドデータオペランド４１６−１及び第４のソースパックドデータオペランド４１６−２を含む１つ又は複数のソースパックドデータオペランドの第２のセットを受信するように結合される。第２のアライメントユニットは、第４の連結及び回転ユニットＣＲ４、第５の連結及び回転ユニットＣＲ５、及び第６の連結及び回転ユニットＣＲ６を含む。ＣＲ４は、０のデータエレメント位置の最下位ビット位置に向けて（図では左向きに示されるが）右回転を実行し、０のデータエレメントオフセット中間オペランド４６８−０を出力するように動作可能である。０のデータエレメント位置だけ回転するので、ＣＲ４ユニットは、任意選択的に、より単純な連結ユニットに置換されてよい。ＣＲ５は、１のデータエレメント位置の最下位ビット位置に向けて右回転を実行し、１のデータエレメントオフセット中間オペランド４６８−１を出力するように動作可能である。ＣＲ６は、２のデータエレメント位置の最下位ビット位置に向けて右回転を実行し、２のデータエレメントオフセット中間オペランド４６８−２を出力するように動作可能である。中間オペランド４６８の各々は、第２のマルチプレクサ（ＭＵＸ）又は他のセレクタユニット４６９への入力として提供されてよい。他の実施形態において、追加の及び／又は異なる数のデータエレメント位置が、任意選択的にサポートされてよい。例えば、代替的な一実施形態において、５又は９の異なるデータエレメントオフセット中間オペランドが、任意選択的に生成され、セレクタユニットに入力されてよい。また、他の実施形態において、任意選択的に、回転の代わりにシフトが用いられてよい。命令によって示される第２のデータエレメントオフセット４２２−２は、第２のセレクタユニット４６９に入力されてよく、入力の１つを選択するために用いられてよい。本例示的実施形態において、第２のデータエレメントオフセットは、２のデータエレメント位置である。そこで、２のデータエレメントオフセット中間オペランド４６１−２が、第２の選択されたオペランド４７０として選択及び出力されてよい。
【００４０】
第１の選択されたオペランド４６５及び第２の選択されたオペランド４７０の両方は、垂直ＳＩＭＤ演算ユニット４６６（例えば、ＳＩＭＤ加算ユニット、ＳＩＭＤ乗算ユニット等）に入力されてよい。垂直ＳＩＭＤ演算ユニットは、第１及び第２の選択されたオペランドの対応データエレメントに対して、垂直ＳＩＭＤ演算オペレーションを実行するように動作可能であってよい。例えば、パック追加、乗算、平均、除算、又は本明細書において説明される他のオペレーションのような、前述されたタイプのオペレーションのいずれも、好適である。垂直ＳＩＭＤ演算ユニットは、結果パックドデータオペランド４２０を出力及び格納してよい。図示される例示的実施形態において、第１のオフセットは１のデータエレメント位置であり、第２のオフセットは２のデータエレメント位置であるので、結果パックドデータオペランドは、Ａ２及びＢ３に対して実行されたオペレーションの値を含む第１の結果データエレメント、Ａ３及びＢ４に対して実行されたオペレーションの値を含む第２の結果データエレメント、Ａ４及びＢ５に対して実行されたオペレーションの値を含む第３の結果データエレメント、ならびにＡ５及びＢ６に対して実行されたオペレーションの値を含む第４の結果データエレメントを有してよい。
【００４１】
これは、好適な実行ユニットの１つの説明例に過ぎない。他の実施形態において、第１及び第２のアライメントユニットは、複数のシフトオペレーション及び選択オペレーションに代えて、代わりに、対応オフセットに基づいて、シフト−マージタイプのオペレーションを実行してよい。さらに他の実施形態において、単一の可変シフト又は回転ユニットは、複数の可能性を形成してこれらの１つを選択する代わりに、オフセットに基づいて、オペランドをシフト又は回転させてよい。さらに、他の実施形態において、単一のデータエレメントオフセットのみが用いられる場合、第１及び第２のアライメントユニットのうちの１つだけが、任意選択的に含まれてよい。
【００４２】
図５は、パックドデータアライメントプラス演算命令５０２の第２の例示的実施形態に応答して実行され得るパックドデータアライメントプラス演算オペレーション５４８の第２の例示的実施形態を示すブロック図である。図５の命令及びオペレーションは、図３の命令及びオペレーションと特定の類似性を有する。説明の妨げとなることを回避すべく、図３の命令及びオペレーションに関する、全ての任意選択的に同様な又は共通の特性、詳細、変形、及び代替を反復することなく、図５の命令及びオペレーションに関しては、異なる及び／又は追加の特性が主に説明される。しかしながら、図３の命令及びオペレーションの前述された特性、詳細、変形、及び代替は、異なる記述がない又は異なることが自明でない限り、任意選択的に、図５の命令及びオペレーションにも適用されてよいことを理解されたい。
【００４３】
命令５０２は、オペコード５３６、第１のソースパックドデータオペランド５１２を規定する第１のソース規定フィールド（ＳＲＣ１）５３８、第２のソースパックドデータオペランド５１６−１を規定する第２のソース規定フィールド（ＳＲＣ２）５４０、及び第３のソースパックドデータオペランド５１６−２を規定する第３のソース規定フィールド（ＳＲＣ３）５４２を含む。本実施形態において、第１のソースパックドデータオペランド５１２は、図３の実施形態における２つのソースパックドデータオペランドと対照的に、単一のソースパックドデータオペランドのみの第１のセットである。第２及び第３のソースパックドデータオペランド５１６は、２つのソースパックドデータオペランドの第２のセットを表す。命令は、任意選択的に、結果パックドデータオペランド５２０が格納されるデスティネーション格納位置を規定するデスティネーション規定フィールド（ＤＥＳＴ）５４６をさらに含む。これらのフィールド及びオペランドの各々は、前述された特性、詳細、変形、及び代替を有してよい。
【００４４】
本実施形態において、命令も、図３の実施形態における２つのデータエレメントオフセットと対照的に、単一のデータエレメントオフセットのみを示す。命令は、単一のオフセットを規定又は示す単一のオフセット規定フィールド５２２を有する。これは、ソースパックドデータオペランドの第２のセット（本実施形態におけるオペランド５１６−１、５１６−２）に対応し、これに適用される。データエレメントオフセット及びその規定フィールドは、前述された特性、詳細、変形、及び代替を有してよい。第１のソースパックドデータオペランドのデータエレメントをオフセット又は移動させることなく、様々な状況において、第２及び第３のソースパックドデータオペランドと第１のソースパックドデータオペランドとの間で相対的オフセットのみを実行することが有用である。単一のデータエレメントオフセットは、これを実現するために十分である。また、単一のデータエレメントオフセットのみを適用することにより、例えば、アライメントユニットの１つを除去（例えば、図４における第１のアライメントユニットを除去）するようなことが、実行ユニットの複雑性を減じる助けとなり得る。図示される例示的実施形態において、単一のオフセットは、３のデータエレメント位置のオフセットを示すが、これは、１つの説明例に過ぎない。他の実施形態において単一のオフセットは、具体的な実装に応じて、−４から４、０から４、−２から２、０から２、又は何らかの他の数のデータエレメント位置のいずれか１つであってよい。前述されたように、オフセットは、データエレメント数、ビット数、シフト量、回転量等として規定されてよい。あるいは、他の実施形態において、望ましい場合には、第２のデータエレメントオフセットが、任意選択的に用いられてよい。代替的な実施形態において、固定オフセットが、任意選択的に、オフセット規定フィールドの代わりに用いられてよく、前述されたように、オペコードに暗示されてよい。
【００４５】
図示される実施形態において、１つ又は複数のソースパックドデータオペランドの第１のセットは、単一の第１のソースパックドデータオペランド５１２（例えば、ＳＲＣ１によって示される）のみを有してよく、これは、本例示的実施形態において、４つのパックドデータエレメントＡ１−Ａ４を有する。第２のソースパックドデータオペランド５１６−１（例えば、ＳＲＣ２によって示される）は、４つのパックドデータエレメントＢ１−Ｂ４を有し、第３のソースパックドデータオペランド５１６−２（例えば、ＳＲＣ３によって示される）は、４つのパックドデータエレメントＢ５−Ｂ８を有する。図示される例示的実施形態において、第２及び第３のソースパックドデータエレメントのみがオフセットされるので、図３におけるデータエレメントＡ５によって示されたような、第１のソースパックドデータオペランドのオフセットに起因して消失したデータエレメントを置換又は代替するための追加のデータエレメントは必要ない。他の数のデータエレメントが、前述されたように、代わりに用いられてよい。さらに、図示される実施形態において、ソースパックドデータオペランドの第２のセットは、第２及び第３のソースパックドデータオペランドを有するが、他の実施形態において、第１のソースパックドデータオペランドより多くのデータエレメント（例えば、サポートされるオフセット量に応じて、２倍又は少なくとももう１つ）を含む単一のソースパックドデータオペランドが、任意選択的に、代わりに用いられてよい。
【００４６】
第１のソースパックドデータオペランド５１２ならびに第２及び第３のソースパックドデータオペランド５１６−１、５１６−２の第２のセットにおいて同じ相対的データエレメント位置にあるデータエレメントは、対応位置にある、及び／又は対応データエレメントである。例えば、Ａ１及びＢ１が対応し、Ａ４及びＢ４が対応する、等である。対照的に、ソースオペランドにおいて、Ａ１及びＢ４は、非対応データエレメント位置にある、及び／又は、Ａ１及びＢ４は、非対応データエレメントである。さらに、第１及び第２のソースパックドデータオペランドは、Ａ１及びＢ５が対応しないように、論理的連結される又は共にあるものとみなされてよい。
【００４７】
パックドデータアライメントプラス演算オペレーション５４８の第２の実施形態は、パックドデータアライメントプラス演算命令５０２の第２の実施形態に応答して実行されてよい。パックドデータアライメントプラス演算命令に応答可能な実行ユニットは、結果パックドデータオペランド５２０を生成し、これをデスティネーション格納位置に格納するように動作可能であってよい。図示される例示的実施形態において、結果パックドデータオペランドは、４つの結果データエレメントを有するが、他の実施形態は、４つより少ない又はより多くの結果データエレメントを有してよい。いくつかの実施形態において、結果データエレメントの各々は、少なくとも、ソースパックドデータオペランドの第１のセット（例えば、単一のソースパックドデータオペランド５１２）におけるデータエレメント及びソースパックドデータオペランドの第２のセット（例えば、第２及び第３のソースパックドデータオペランド５１６−１、５１６−２）における非対応データエレメントのペアにより実行されたオペレーション（ＯＰ）の値を有してよい。各ペアの非対応データエレメントは、第１のソースパックドデータオペランドならびに第２及び第３のパックドデータオペランドにおいて、非対応データエレメント位置にあってよい。例えば、図示される例示的実施形態において、第１の結果データエレメントは、Ａ１及びＢ４に対して実行されたオペレーション（ＯＰ）の値を有してよく、第２の結果データエレメントは、Ａ２及びＢ５に対して実行されたオペレーション（ＯＰ）の値を有してよく、第３の結果データエレメントは、Ａ３及びＢ６に対して実行されたオペレーション（ＯＰ）の値を有してよく、第４の結果データエレメントは、Ａ４及びＢ７に対して実行されたオペレーション（ＯＰ）の値を有してよい。これは、１つの説明例に過ぎない。
【００４８】
前述されたように、いくつかの実施形態において、各ペアの非対応データエレメントは、ソースパックドデータオペランドにおいて、単一のデータエレメントオフセットに基づいて異なる非対応データエレメント位置にある。非対応データエレメント位置は、実行ユニットが、パックドデータアライメントプラス演算命令に応答して、かつ、パックドデータアライメントプラス演算命令の性能の制約内において、非対応データエレメントを対応データエレメント位置に配置すべく、単一のデータエレメントオフセットを第２及び第３のソースパックドデータオペランドに適用するように動作可能となるような位置であってよい。例えば、Ｂ４は、Ａ１に対応する（例えば、同じ相対的データエレメント位置を有する）ように、単一のデータエレメントオフセット５２２を第２及び第３のソースパックドデータオペランドに適用（例えば、これらの論理的連結）することによって、３のデータエレメント位置だけオフセット又は移動させられてよい。実行ユニットは、前述されたように、様々な異なるタイプのオペレーション（ＯＰ）のいずれかを、アライメントされたデータエレメントに対して実行するように動作可能であってよい。いくつかの実施形態において、実行ユニットは、対応データエレメントのみに対して、「垂直」ＳＩＭＤ演算オペレーションを実行してよい。他の実施形態において、実行ユニットは、対応データエレメント及び非対応データエレメントの組み合わせを含む垂直及び非垂直ＳＩＭＤ演算オペレーションの両方の組み合わせを実行してよい。
【００４９】
図６は、パックドデータアライメントプラス演算命令６０２の第３の例示的実施形態に応答して実行され得るパックドデータアライメントプラス演算オペレーション６４８の第３の例示的実施形態を示すブロック図である。図６の命令及びオペレーションは、図３の命令及びオペレーションと特定の類似性を有する。説明の妨げとなることを回避すべく、図３の命令及びオペレーションに関する、全ての任意選択的に同様な又は共通の特性、詳細、変形、及び代替を反復することなく、図６の命令及びオペレーションに関しては、異なる及び／又は追加の特性が主に説明される。しかしながら、図３の命令及びオペレーションの前述された特性、詳細、変形、及び代替は、異なる記述がない又は異なることが自明でない限り、任意選択的に、図６の命令及びオペレーションにも適用されてよいことを理解されたい。
【００５０】
命令６０２は、オペコード６３６、第１のソースパックドデータオペランド６１２を規定する第１のソース規定フィールド（ＳＲＣ１）６３８、及び第２のソースパックドデータオペランド６１６を規定する第２のソース規定フィールド（ＳＲＣ２）６４０を含む。本実施形態において、第１のソースパックドデータオペランド６１２は、単一のソースパックドデータオペランドのみの第１のセットを表す。同様に、第２のソースパックドデータオペランド６１６は、単一のソースパックドデータオペランドのみの第２のセットを表す。命令は、任意選択的に、結果パックドデータオペランド６２０が格納されるデスティネーション格納位置を規定するデスティネーション規定フィールド（ＤＥＳＴ）６４６をさらに含む。これらのフィールド及びオペランドの各々は、前述された特性、詳細、変形、及び代替を有してよい。
【００５１】
本実施形態において、命令は、第１のデータエレメントオフセット６２２−１及び第２のデータエレメントオフセット６２２−２をさらに示す。第１のデータエレメントオフセットは、第１のソースパックドデータオペランド６１２に対応し、かつ、これに適用され、第２のデータエレメントオフセットは、第２のソースパックドデータオペランド６１６に対応し、かつ、これに適用される。他の実施形態において、（例えば、図５と併せて説明されたように）望ましい場合には、単一のデータエレメントオフセットのみが用いられてよい。データエレメントオフセット、及びこれらの規定フィールドは、前述された特性、詳細、変形、及び代替を有してよい。図示される例示的実施形態において、第１のデータエレメントオフセットは、０のデータエレメント位置のオフセットを示し、第２のデータエレメントオフセットは、３のデータエレメント位置のオフセットを示すが、これは、１つの説明例に過ぎない。他の実施形態において、互いに独立するデータエレメントオフセットの各々は、具体的な実装に応じて、−４から４、０から４、−２から２、０から２、又は何らかの他の数のデータエレメント位置のいずれか１つであってよい（例えば、より多くのデータエレメントが存在する場合には、より大きい数のオフセットが用いられてもよい）。前述されたように、各データエレメントオフセットは、データエレメント数、ビット数、ビット又はデータエレメントのシフト量、ビットもしくはデータエレメントの回転量等として規定されてよい。
【００５２】
図示される例示的実施形態において、第１のソースパックドデータオペランド６１２（例えば、ＳＲＣ１によって示される）は、８つのパックドデータエレメントＡ１−Ａ８を有する。第２のソースパックドデータオペランド６１６（例えば、ＳＲＣ２によって示される）は、８つのパックドデータエレメントＢ１−Ｂ８を有する。他の実施形態において、他の数のデータエレメントが、任意選択的に、代わりに用いられてよい。第１のソースパックドデータオペランド６１２及び第２のソースパックドデータオペランド６１６において同じ相対的データエレメント位置にあるデータエレメントは、対応位置にある、及び／又は対応データエレメントである。例えば、Ａ１及びＢ１が対応し、Ａ７及びＢ７が対応する、等である。対照的に、ソースオペランドにおいて、Ａ１及びＢ４は、非対応データエレメント位置にある、及び／又は、Ａ１及びＢ４は、非対応データエレメントである。図示される実施形態において、ソースオペランドの各々は、結果パックドデータオペランドより多くのデータエレメント（例えば、この例において、２倍のデータエレメント）を有する。
【００５３】
パックドデータアライメントプラス演算オペレーション６４８の第３の実施形態は、パックドデータアライメントプラス演算命令６０２の第３の実施形態に応答して実行されてよい。パックドデータアライメントプラス演算命令に応答可能な実行ユニットは、結果パックドデータオペランド６２０を生成し、これをデスティネーション格納位置に格納するように動作可能であってよい。図示される例示的実施形態において、結果パックドデータオペランドは、４つの結果データエレメントを有するが、他の実施形態は、４つより少ない又はより多くの結果データエレメントを有してよい。いくつかの実施形態において、結果データエレメントの各々は、少なくとも、第１のソースパックドデータオペランド６１２におけるデータエレメント及び第２のソースパックドデータオペランド６１６における非対応データエレメントのペアにより実行されたオペレーション（ＯＰ）の値を有してよい。各ペアの非対応データエレメントは、第１及び第２のソースパックドデータオペランドにおいて、非対応データエレメント位置にあってよい。例えば、図示される例示的実施形態において、第１の結果データエレメントは、Ａ１及びＢ４に対して実行されたオペレーション（ＯＰ）の値を有してよく、第２の結果データエレメントは、Ａ２及びＢ５に対して実行されたオペレーション（ＯＰ）の値を有してよく、第３の結果データエレメントは、Ａ３及びＢ６に対して実行されたオペレーション（ＯＰ）の値を有してよく、第４の結果データエレメントは、Ａ４及びＢ７に対して実行されたオペレーション（ＯＰ）の値を有してよい。これは、１つの説明例に過ぎない。他の説明例において、第１のオフセットは、代わりに、１、３（例えば、第２のオフセットと同じ）、４、１０等であってよい。
【００５４】
前述されたように、いくつかの実施形態において、各ペアの非対応データエレメントは、第１及び第２のソースパックドデータオペランドにおいて、非対応データエレメント位置にあってよく、ここで、非対応位置は、第１及び第２のデータエレメントオフセットの適用に基づいて異なる。非対応データエレメント位置は、実行ユニットが、非対応データエレメントに対応関係を持たせるべく、第１及び第２のデータエレメントオフセットを第１及び第２のソースパックドデータオペランドにそれぞれ適用するように動作可能となるような位置であってよい。例えば、Ｂ４は、Ａ１に対応する（例えば、同じ相対的データエレメント位置を有する）ように、３のデータエレメント位置だけオフセット又は移動させられてよい。実行ユニットは、前述されたように、様々な異なるタイプのオペレーション（ＯＰ）のいずれかを、アライメントされたデータエレメントに対して実行するように動作可能であってよい。いくつかの実施形態において、実行ユニットは、対応データエレメントのみに対して、「垂直」ＳＩＭＤ演算オペレーションを実行してよい。他の実施形態において、実行ユニットは、対応データエレメント及び非対応データエレメントの組み合わせを含む垂直及び非垂直ＳＩＭＤ演算オペレーションの両方の組み合わせを実行してよい。
【００５５】
いくつかの実施形態において、本明細書において開示される命令は、画像処理における画素フィルタリングにおいて用いられてよいが、本発明の範囲は、このように限定されるものではない。フィルタリングにおいて、フィルタリングされた結果の画素が、所与の入力画素及び所与の入力画素に近接する１つ又は複数の画素から算出されることは、非常に一般的である。例として、画素の列をなす所与の画素は、所与の画素の両側において隣接する近接画素と共に（例えば、標準化畳み込み１、２、１係数フィルタにより）、フィルタリングされてよい。従来、ＳＩＭＤベクトルプロセッサにおけるフィルタの実装は、データの反復アライメントを用いて実行され、毎回、ＳＩＭＤオペレーションがこれに続く。画像化及びビジョンにおいて、このようなフィルタが、サイズ３ｘ３、５ｘ５、７ｘ７等の２次元（２Ｄ）形式で多用されており、（本明細書において開示される命令が用いられない限り）これらはそれぞれ、９、２５、及び４９のアライメントオペレーションを含み得るものであり、これらの各々は、別個のパックドデータアライメント命令である可能性がある。特に、埋め込みデジタル信号プロセッサ、又は他の概してリソースが制約された環境において実装される場合に、追加のアライメントオペレーションを実行するサイクルコスト、及び／又はアライメント命令の中間結果を格納するために必要とされる追加のレジスタ空間は、全体的な効率性に大きく影響し得る。
【００５６】
上述された実施形態の多くにおいて、１つ又は複数のソースパックドデータオペレーションの異なるセットが図示及び説明されている（例えば、図１におけるセット１１２及び１１６）。いくつかの用途及び実装において、（例えば、１つ又は複数のソースパックドデータオペランドの１つの単一のセットにおける）同じデータが、オペレーションのために用いられてよい。これを実現する１つの態様は、同じレジスタ又は他の格納位置を、１つ又は複数のソースパックドデータオペランドの両方のセットに対して規定することである。例えば、命令は、セット１１２に対してレジスタＲ１及びＲ２のペアを規定してよく、セット１１６に対しても、レジスタＲ１及びＲ２を規定してよい。あるいは、１つ又は複数のパックドデータオペランドの単一のセット（例えば、セット１１２）は、命令によって規定されてよく（例えば、レジスタＲ１及びＲ２が規定されてよい）、ソースパックドデータオペランドの第１及び第２のセット１１２、１１６の両方に対してソースパックドデータオペランド１１２の単一のセットを用いることが、命令（例えば、そのオペコード）によって暗示又は黙示されてよい。命令は、追加のソース規定フィールド（例えば、ＳＲＣ２、ＳＲＣ３）を省略してよい。いくつかの実施形態において、全てのソースオペランドのデータエレメントは、任意選択的に、全て、画像の画素の同じ列の画素であってよい。例えば、画素をこれらの近接画素と共に平均化（例えば、フィルタ係数１，２，１による画素の標準化畳み込みを実装）するために、画像処理における画素フィルタリングにおいて、及び様々な他の適用において、各コピー又は複製に異なるオフセットを適用して、ソースパックドデータオペランドの同じセットの異なるコピー又は複製を複数回オフセットする（例えば、フィルタ係数１，２，１による画素の標準化畳み込みの場合、３つの複製に０、１、及び２のデータエレメントオフセットを適用する）ことを可能とすることが、しばしば有用である。従って、上記の開示された事項に対する代替的な実施形態は、１つ又は複数のソースパックドデータオペランドの単一のセット（例えば、１１２）のみを示し、（例えば、明示されたセット１１６の代わりに）当該示されたセットのコピー又は複製を暗示的又は既定的に再利用してよい。
【００５７】
図７は、本発明の実施形態を実装するために好適なプロセッサ７００の詳細な例示的実施形態のブロック図である。プロセッサは、パックドデータアライメントプラス演算命令の実施形態を実行可能な少なくとも１つのコア７８０を含む。コアは、プログラムフローにおける分岐を予測する分岐予測ユニット７８１を含む。分岐予測ユニットは、命令プリフェッチユニット７８２に結合される。命令プリフェッチユニットは、パックドデータアライメントプラス演算命令を含む命令を、（例えば、メモリユニット７９０を通して）メモリからプリフェッチ又は受信してよい。レベル１（Ｌ１）命令キャッシュ７８３が、命令プリフェッチユニットに結合される。Ｌ１命令キャッシュは、パックドデータアライメントプラス演算命令を含む命令をキャッシュ又は格納してよい。プロセッサは、命令のためのデータエレメント及び／又はオペランドを含むデータをキャッシュ又は格納するＬ１データキャッシュ７９１をさらに含む。プロセッサは、任意選択的に、レベル２（Ｌ２）キャッシュ７９２をさらに含む。Ｌ２キャッシュは、コア専用であってよく、又は、コア及び１つ又は複数の他の任意選択的なコア（不図示）によって共有されてよい。Ｌ２キャッシュは、パックドデータアライメントプラス演算命令を含むデータ及び命令を格納してよい。命令フェッチユニット７８４は、Ｌ１命令キャッシュ、Ｌ２キャッシュ、及びデコードユニット７０４に結合される。命令フェッチユニットは、パックドデータアライメントプラス演算命令を含む命令を、（例えば、Ｌ１命令キャッシュ又はＬ２キャッシュから）フェッチ又は受信してよく、命令をデコードユニットに提供してよい。デコードユニットは、本明細書の他の箇所で説明されたように、パックドデータアライメントプラス演算命令を含む命令をデコードしてよい。
【００５８】
プロセッサは、１つ又は複数のレジスタファイルユニット７８８をさらに含む。レジスタファイルユニットは、例えば、パックドデータレジスタ、汎用レジスタ、ステータスもしくはフラグレジスタ、制御もしくは構成レジスタ等のような、様々な異なるタイプのレジスタを含んでよい。コアがアウトオブオーダ（ＯＯＯ）実行を任意選択的にサポートする実施形態において、コアは、任意選択的に、レジスタファイルユニットに結合されたレジスタリネーミング／アロケータユニット７８５をさらに含んでよい。これは、リソースを割り当て、レジスタ（例えば、パックドデータアライメントプラス演算命令に関連付けられたパックドデータレジスタ）に対してレジスタリネーミングを実行する。さらに、ＯＯＯ実行のために、コアは、任意選択的に、デコードユニット、リネーミング／アロケータユニット、及び１つ又は複数の実行ユニット７０６、７８９に結合された１つ又は複数のスケジューラユニット７８６を含んでよい。スケジューラユニットは、パックドデータアライメントプラス演算命令からデコードされた１つ又は複数のオペレーションを含むデコードされた命令に関連付けられた１つ又は複数のオペレーションを、実行ユニットにおける実行のためにスケジューリングしてよい。コアは、任意選択的に、例えば、整数実行ユニット、浮動小数点実行ユニット、ベクトル実行ユニット、１つ又は複数のメモリアクセスユニット７８９等のような、複数の異なるタイプの実行ユニットを有してよい。ＯＯＯ実行のために、コアは、任意選択的に、実行ユニット、レジスタファイルユニット、及びリネーミング／アロケータユニットに結合されたリタイアメント又はコミットユニット７８７を含んでよい。リタイアメント又はコミットユニットは、命令をリタイア又はコミットするように動作可能であってよい。
【００５９】
これは、好適なプロセッサの１つの説明例に過ぎないことを理解されたい。代替的な実施形態において、プロセッサは、より少ない又はより多くのコンポーネントを含んでよい。任意選択的に含まれ得る他のコンポーネントの例は、１つ又は複数の命令及び／又はデータトランスレーションルックアサイドバッファ（ＴＬＢ）、１つ又は複数のリオーダバッファ（ＲＯＢ）、予約ステーション、アドレス生成ユニット、デバッグユニット、性能モニタユニット、電力管理ユニットである。さらに、プロセッサは、任意選択的に、（例えば、少なくとも２つ、少なくとも４つ、少なくとも８つ、少なくとも３０等の）マルチコアを有してよい。いくつかの場合には、コアの全ては、同じコンポーネントを有し、コア７８０と同じ命令セットをサポートしてよい。あるいは、コアの少なくともいくつかは、異なるコンポーネントを有してよく、及び／又は、異なる命令セットをサポートしてよい。
【００６０】
［例示的なコアアーキテクチャ、プロセッサ、及びコンピュータアーキテクチャ］
プロセッサコアは、異なる態様で、異なる目的のために、異なるプロセッサにおいて、実装されてよい。例えば、このようなコアの実装は、１）汎用コンピューティング用の汎用インオーダコア、２）汎用コンピューティング用の高性能汎用アウトオブオーダコア、３）主にグラフィクス及び／又は科学的（スループット）コンピューティング用の特定用途向けコアを含んでよい。異なるプロセッサの実装は、１）汎用コンピューティング用の１つ又は複数の汎用インオーダコア、及び／又は汎用コンピューティング用の１つ又は複数の汎用アウトオブオーダコアを含むＣＰＵ、ならびに２）主にグラフィクス及び／又は科学的（スループット）用の１つ又は複数の特定用途向けコアを含むコプロセッサを含んでよい。このような異なるプロセッサは、異なるコンピュータシステムアーキテクチャをもたらし、これは、１）ＣＰＵとは別個のチップ上のコプロセッサ、２）ＣＰＵと同じパッケージ内の別個のダイ上にあるコプロセッサ、３）ＣＰＵと同じダイ上のコプロセッサ（この場合、このようなコプロセッサは、統合グラフィクス及び／又は科学的（スループット）ロジックのような特定用途向けロジック、又は特定用途向けコアと称される場合がある）、及び４）同じダイ上に、説明されたＣＰＵ（アプリケーションコア又はアプリケーションプロセッサと称される場合がある）、上述のコプロセッサ及び追加の機能を含み得るシステムオンチップを含んでよい。例示的なコアアーキテクチャが、次に説明され、続いて、例示的なプロセッサ及びコンピュータアーキテクチャが説明される。
【００６１】
［例示的なコアアーキテクチャ］
インオーダ及びアウトオブオーダコアのブロック図
図８Ａは、本発明の実施形態に係る例示的なインオーダパイプライン及び例示的なレジスタリネーミング、アウトオブオーダ発行／実行パイプラインの両方を示すブロック図である。図８Ｂは、本発明の実施形態に係る、プロセッサに含まれるインオーダアーキテクチャコア及び例示的なレジスタリネーミング、アウトオブオーダ発行／実行アーキテクチャコアの両方の例示的な実施形態を示すブロック図である。図８Ａ−Ｂにおける実線のボックスは、インオーダパイプライン及びインオーダコアを示し、任意選択的に追加された破線のボックスは、レジスタリネーミング、アウトオブオーダ発行／実行パイプライン及びコアを示す。インオーダ態様がアウトオブオーダ態様のサブセットであることを前提に、アウトオブオーダ態様が説明される。
【００６２】
図８Ａにおいて、プロセッサパイプライン８００は、フェッチステージ８０２、長さデコードステージ８０４、デコードステージ８０６、割り当てステージ８０８、リネーミングステージ８１０、スケジューリング（ディスパッチ又は発行としても知られる）ステージ８１２、レジスタ読み出し／メモリ読み出しステージ８１４、実行ステージ８１６、ライトバック／メモリ書き込みステージ８１８、例外処理ステージ８２２、及びコミットステージ８２４を含む。
【００６３】
図８Ｂは、実行エンジンユニット８５０に結合されたフロントエンドユニット８３０を含み、この両方がメモリユニット８７０に結合されたプロセッサコア８９０を示す。コア８９０は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複合命令セットコンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア、又はハイブリッドもしくは代替的なタイプのコアであってよい。さらに他の選択肢として、コア８９０は、例えば、ネットワーク又は通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィクス処理ユニット（ＧＰＧＰＵ）コア、グラフィクスコア等のような特定用途向けコアであってよい。
【００６４】
フロントエンドユニット８３０は、命令キャッシュユニット８３４に結合された分岐予測ユニット８３２を含み、命令キャッシュユニット８３４は命令トランスレーションルックアサイドバッファ（ＴＬＢ）８３６に結合され、命令トランスレーションルックアサイドバッファ８３６は命令フェッチユニット８３８に結合され、命令フェッチユニット８３８はデコードユニット８４０に結合される。デコードユニット８４０（又はデコーダ）は、命令をデコードし、元の命令からデコードされ、これらを反映し、又はこれらから導出された１つ又は複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、又は他の制御信号を、出力として生成してよい。デコードユニット８４０は、様々な異なるメカニズムを用いて実装されてよい。好適なメカニズムの例は、限定されるものではないが、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ（ＰＬＡ）、マイクロコードリードオンリメモリ（ＲＯＭ）等を含む。一実施形態において、コア８９０は、（例えば、デコードユニット８４０において、又はフロントエンドユニット８３０内に）特定のマクロ命令に対するマイクロコードを格納するマイクロコードＲＯＭ又は他の媒体を含む。デコードユニット８４０は、実行エンジンユニット８５０におけるリネーミング／アロケータユニット８５２に結合される。
【００６５】
実行エンジンユニット８５０は、リタイアメントユニット８５４に結合されたリネーミング／アロケータユニット８５２、及び１つ又は複数のスケジューラユニット８５６のセットを含む。スケジューラユニット８５６は、予約ステーション、中央命令ウィンドウ等を含む、任意の数の異なるスケジューラを表す。スケジューラユニット８５６は、物理レジスタファイルユニット８５８に結合される。物理レジスタファイルユニット８５８の各々は、１つ又は複数の物理レジスタファイルを表す。これらの異なる１つ１つは、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス（例えば、次に実行される命令のアドレスである命令ポインタ）等のような、１つ又は複数の異なるデータタイプを格納する。一実施形態において、物理レジスタファイルユニット８５８は、ベクトルレジスタユニット、書き込みマスクレジスタユニット、及びスカラレジスタユニットを含む。これらのレジスタユニットは、アーキテクチャベクトルレジスタ、ベクトルマスクレジスタ、及び汎用レジスタを提供してよい。物理レジスタファイルユニット８５８は、リタイアメントユニット８５４とオーバラップし、（例えば、リオーダバッファ及びリタイアメントレジスタファイルを用いて、フューチャファイル、履歴バッファ、及びリタイアメントレジスタファイルを用いて、レジスタのレジスタマップ及びプール等を用いて、等）レジスタリネーミング及びアウトオブオーダ実行が実装され得る様々な態様を示す。リタイアメントユニット８５４及び物理レジスタファイルユニット８５８は、実行クラスタ８６０に結合される。実行クラスタ８６０は、１つ又は複数の実行ユニット８６２のセット及び１つ又は複数のメモリアクセスユニット８６４のセットを含む。実行ユニット８６２は、様々なオペレーション（例えば、シフト、加算、減算、乗算）を様々なタイプのデータ（例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）に対して実行してよい。いくつかの実施形態は、特定の機能又は機能のセット専用の多数の実行ユニットを含んでよいが、他の実施形態は、１つだけの実行ユニット、又は全ての機能を全てが実行する複数の実行ユニットを含んでよい。スケジューラユニット８５６、物理レジスタファイルユニット８５８及び実行クラスタ８６０は、複数として示される場合がある。なぜなら、特定の実施形態は、特定のタイプのデータ／オペレーションに対して、別個のパイプラインを形成するからである（例えば、各々がこれら自身のスケジューラユニット、物理レジスタファイルユニット及び／又は実行クラスタを有する、スカラ整数パイプライン、スカラ浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、及び／又はメモリアクセスパイプラインであり、別個のメモリアクセスパイプラインの場合、このパイプラインの実行クラスタのみがメモリアクセスユニット８６４を有する特定の実施形態が実装される）。別個のパイプラインが用いられる場合に、これらのパイプラインの１つ又は複数は、アウトオブオーダ発行／実行であってよく、残りはインオーダであってよいことも理解されたい。
【００６６】
メモリアクセスユニット８６４のセットは、メモリユニット８７０に結合される。メモリユニット８７０は、レベル２（Ｌ２）キャッシュユニット８７６に結合されたデータキャッシュユニット８７４に結合された、データＴＬＢユニット８７２を含む。例示的な一実施形態において、メモリアクセスユニット８６４は、ロードユニット、ストアアドレスユニット、及びストアデータユニットを含んでよく、これらの各々は、メモリユニット８７０におけるデータＴＬＢユニット８７２に結合される。命令キャッシュユニット８３４は、メモリユニット８７０のレベル２（Ｌ２）キャッシュユニット８７６に、さらに結合される。Ｌ２キャッシュユニット８７６は、１つ又は複数の他のレベルのキャッシュに結合され、最終的に、メインメモリに結合される。
【００６７】
例として、例示的なレジスタリネーミング、アウトオブオーダ発行／実行コアアーキテクチャは、以下の通りパイプライン８００を実装してよい。１）命令フェッチ８３８が、フェッチ及び長さデコードステージ８０２及び８０４を実行する、２）デコードユニット８４０が、デコードステージ８０６を実行する、３）リネーミング／アロケータユニット８５２が、割り当てステージ８０８及びリネーミングステージ８１０を実行する、４）スケジューラユニット８５６が、スケジューリングステージ８１２を実行する、５）物理レジスタファイルユニット８５８及びメモリユニット８７０が、レジスタ読み出し／メモリ読み出しステージ８１４を実行し、実行クラスタ８６０が、実行ステージ８１６を実行する、６）メモリユニット８７０及び物理レジスタファイルユニット８５８が、ライトバック／メモリ書き込みステージ８１８を実行する、７）様々なユニットが、例外処理ステージ８２２に関与してよく、８）リタイアメントユニット８５４及び物理レジスタファイルユニット８５８が、コミットステージ８２４を実行する。
【００６８】
コア８９０は、本明細書において説明される命令を含む１つ又は複数の命令セット（例えば、（より新たなバージョンを伴う、いくつかの拡張が追加された）ｘ８６命令セット、カリフォルニア州サニーベールのＭＩＰＳ  ＴｅｃｈｎｏｌｏｇｉｅｓのＭＩＰＳ命令セット、カリフォルニア州サニーベールのＡＲＭ  Ｈｏｌｄｉｎｇｓの（ＮＥＯＮのような任意選択的な追加の拡張を有する）ＡＲＭ命令セット）をサポートしてよい。一実施形態において、コア８９０は、パックドデータ命令セット拡張（例えば、ＡＶＸ１、ＡＶＸ２）をサポートするロジックを含み、これにより、多くのマルチメディアアプリケーションによって用いられるオペレーションが、パックドデータを用いて実行されることが可能となる。
【００６９】
コアは、マルチスレッディング（オペレーション又はスレッドの２つ又はそれより多くの並列なセットを実行すること）をサポートしてよく、時分割マルチスレッディング、同時マルチスレッディング（単一の物理コアが、物理コアが同時にマルチスレッディングするスレッドの各々に対して論理コアを提供する）、又はこれらの組み合わせ（例えば、インテル（登録商標）ハイパースレッディングテクノロジにおけるもののような、時分割フェッチ及びデコードならびにその後の同時マルチスレッディング）を含む様々な態様で、これを実行してよいことを理解されたい。
【００７０】
レジスタリネーミングが、アウトオブオーダ実行に関連して説明されるが、レジスタリネーミングは、インオーダアーキテクチャにおいて用いられてよいことを理解されたい。プロセッサの図示される実施形態は、別個の命令ならびにデータキャッシュユニット８３４／８７４及び共有Ｌ２キャッシュユニット８７６をさらに含むが、代替的な実施形態は、命令及びデータの両方のための、例えば、レベル１（Ｌ１）内部キャッシュのような単一の内部キャッシュ、又は複数のレベルの内部キャッシュを有してよい。いくつかの実施形態において、システムは、内部キャッシュと、コア及び／又はプロセッサの外部にある外部キャッシュとの組み合わせを含んでよい。あるいは、キャッシュの全ては、コア及び／又はプロセッサの外部にあってよい。
【００７１】
［具体的な例示的インオーダコアアーキテクチャ］
図９Ａ−Ｂは、より具体的な例示的インオーダコアアーキテクチャのブロック図を示す。ここで、コアは、チップにおけるいくつかの論理ブロック（同じタイプ及び／又は異なるタイプの他のコアを含む）の中の１つであってよい。論理ブロックは、高帯域幅相互接続ネットワーク（例えば、リングネットワーク）を通して、用途に応じて、いくつかの固定機能ロジック、メモリＩ／Ｏインタフェース、及び他の必要なＩ／Ｏロジックとの通信を行う。
【００７２】
図９Ａは、本発明の実施形態に係るシングルプロセッサコアのブロック図であり、そのオンダイ相互接続ネットワーク９０２への接続、及びそのレベル２（Ｌ２）キャッシュ９０４のローカルサブセットと共に示す。一実施形態において、命令デコーダ９００は、パックドデータ命令セット拡張を含むｘ８６命令セットをサポートする。Ｌ１キャッシュ９０６は、スカラ及びベクトルユニットに入るキャッシュメモリへの低レイテンシアクセスを可能にする。一実施形態において、（設計を単純化するために）スカラユニット９０８及びベクトルユニット９１０は、別個のレジスタセット（それぞれ、スカラレジスタ１９１２及びベクトルレジスタ９１４）を用い、これらの間で転送されたデータは、メモリに書き込まれ、次に、レベル１（Ｌ１）キャッシュ９０６からリードバックされるが、本発明の代替的な実施形態は、異なるアプローチ（例えば、単一のレジスタセットを用いる、又は、書き込み及びリードバックされることなく、データが２つのレジスタファイル間で転送されることを可能とする通信経路を含む）を用いてよい。
【００７３】
Ｌ２キャッシュのローカルサブセット９０４は、プロセッサコア毎に１つの別個のローカルサブセットに分割されるグローバルＬ２キャッシュの一部である。各プロセッサコアは、Ｌ２キャッシュのローカルサブセット９０４へのそれ自身の直接アクセス経路を有する。プロセッサコアによって読み出されたデータは、そのＬ２キャッシュサブセット９０４に格納され、他のプロセッサコアによるこれら自身のローカルＬ２キャッシュサブセットへのアクセスと並列に、迅速なアクセスが可能である。プロセッサコアによって書き込まれたデータは、必要に応じて、それ自身のＬ２キャッシュサブセット９０４に格納され、他のサブセットからフラッシュされる。リングネットワークは、共有データに対するコヒーレンシを確保する。リングネットワークは、双方向であり、プロセッサコア、Ｌ２キャッシュ及び他の論理ブロックのようなエージェントが、チップ内で互いに通信を行うことを可能とする。各リングデータ経路は、一方向あたり１０１２ビット幅である。
【００７４】
図９Ｂは、本発明の実施形態に係る図９Ａにおけるプロセッサコアの一部の拡大図である。図９Ｂは、Ｌ１キャッシュ９０６のＬ１データキャッシュ９０６Ａ部分、ならびにベクトルユニット９１０及びベクトルレジスタ９１４に関するさらなる詳細を含む。具体的には、ベクトルユニット９１０は、整数、単精度浮動小数、及び倍精度浮動小数命令のうちの１つ又は複数を実行する、１６幅ベクトル処理ユニット（ＶＰＵ）（１６幅ＡＬＵ９２８参照）である。ＶＰＵは、スウィズルユニット９２０によるレジスタ入力のスウィズル、数値変換ユニット９２２Ａ−Ｂによる数値変換、及び複製ユニット９２４によるメモリ入力に対する複製をサポートする。書き込みマスクレジスタ９２６は、結果的なベクトル書き込みの叙述を可能とする。
【００７５】
［統合メモリコントローラ及びグラフィクスを有するプロセッサ］
図１０は、本発明の実施形態に係る１つより多くのコア、統合メモリコントローラ、及び統合グラフィクスを有し得るプロセッサ１０００のブロック図である。図１０における実線のボックスは、シングルコア１００２Ａ、システムエージェント１０１０、１つ又は複数のバスコントローラユニット１０１６のセットを有するプロセッサ１０００を示し、任意選択的に追加された破線のボックスは、マルチコア１００２Ａ−Ｎ、システムエージェントユニット１０１０における１つ又は複数の統合メモリコントローラユニット１０１４のセット、及び特定用途向けロジック１００８を有する代替的なプロセッサ１０００を示す。
【００７６】
そこで、プロセッサ１０００の異なる実装は、１）（１つ又は複数のコアを含み得る）統合グラフィクス及び／又は科学的（スループット）ロジックである特定用途向けロジック１００８、及び１つ又は複数の汎用コア（例えば、汎用インオーダコア、汎用アウトオブオーダコア、これら２つの組み合わせ）であるコア１００２Ａ−Ｎを有するＣＰＵ、２）主にグラフィクス及び／又は科学的（スループット）向けの多数の特定用途向けコアであるコア１００２Ａ−Ｎを有するコプロセッサ、及び３）多数の汎用インオーダコアであるコア１００２Ａ−Ｎを有するコプロセッサを含んでよい。そこで、プロセッサ１０００は、汎用プロセッサ、コプロセッサ、又は例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、ＧＰＧＰＵ（汎用グラフィクス処理ユニット）、高スループット多集積コア（ＭＩＣ）コプロセッサ（３０又はそれより多くのコアを含む）、埋め込みプロセッサ等のような特定用途向けプロセッサであってよい。プロセッサは、１つ又は複数のチップ上に実装されてよい。プロセッサ１０００は、例えば、ＢｉＣＭＯＳ、ＣＭＯＳ、又はＮＭＯＳのような多数の処理技術のいずれかを用いて、１つ又は複数の基板の一部であってよい、及び／又は、これらの上に実装されてよい。
【００７７】
メモリ階層は、コア内における１つ又は複数のレベルのキャッシュ、１つ又は複数の共有キャッシュユニット１００６のセット、及び統合メモリコントローラユニット１０１４のセットに結合された外部メモリ（不図示）を含む。共有キャッシュユニット１００６のセットは、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、又は他のレベルのキャッシュ等のような１つ又は複数の中レベルキャッシュ、ラストレベルキャッシュ（ＬＬＣ）、及び／又はこれらの組み合わせを含んでよい。一実施形態において、リングベースの相互接続ユニット１０１２が、統合グラフィクススロジック１００８、共有キャッシュユニット１００６のセット、及びシステムエージェントユニット１０１０／統合メモリコントローラユニット１０１４を相互接続するが、代替的な実施形態は、このようなユニットを相互接続する任意の数の周知技術を用いてよい。一実施形態において、１つ又は複数のキャッシュユニット１００６とコア１００２−Ａ−Ｎとの間で、コヒーレンシが維持される。
【００７８】
いくつかの実施形態において、コア１００２Ａ−Ｎの１つ又は複数は、マルチスレッディングが可能である。システムエージェント１０１０は、コア１００２Ａ−Ｎを調整及び動作させるこれらのコンポーネントを含む。システムエージェントユニット１０１０は、例えば、電力制御ユニット（ＰＣＵ）及びディスプレイユニットを含んでよい。ＰＣＵは、コア１００２Ａ−Ｎ及び統合グラフィクススロジック１００８の電力状態を調整するために必要とされるロジック及びコンポーネントであってよい、又はこれらを含んでよい。ディスプレイユニットは、１つ又は複数の外部接続ディスプレイを駆動させるためのものである。
【００７９】
コア１００２Ａ−Ｎは、アーキテクチャ命令セットの観点から、ホモジニアス又はヘテロジニアスであってよい。すなわち、コア１００２Ａ−Ｎのうち２つ又はそれより多くは、同じ命令セットを実行可能であってよいが、他のコアは、当該命令セット又は異なる命令セットのサブセットのみを実行可能であってよい。
【００８０】
［例示的なコンピュータアーキテクチャ］
図１１−２１は、例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドＰＣ、パーソナルデジタルアシスタント、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、埋め込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、グラフィクスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤ、ハンドヘルドデバイス、及び様々な他の電子デバイス用の、当技術分野において公知な他のシステム設計及び構成も、好適である。概して、本明細書において開示されるプロセッサ及び／又は他の実行ロジックを組み込み可能な多種多様なシステム又は電子デバイスが、概して好適である。
【００８１】
ここで図１１を参照すると、本発明の一実施形態に係るシステム１１００のブロック図が示される。システム１１００は、コントローラハブ１１２０に結合された１つ又は複数のプロセッサ１１１０、１１１５を含んでよい。一実施形態において、コントローラハブ１１２０は、グラフィクスメモリコントローラハブ（ＧＭＣＨ）１１９０及び入力／出力ハブ（ＩＯＨ）１１５０（これらは、別個のチップ上にあってよい）を含み、ＧＭＣＨ１１９０は、メモリ１１４０及びコプロセッサ１１４５が結合されたメモリ及びグラフィクスコントローラを含み、ＩＯＨ１１５０は、入力／出力（Ｉ／Ｏ）デバイス１１６０をＧＭＣＨ１１９０に結合する。あるいは、メモリ及びグラフィクスコントローラの一方又は両方は、（本明細書において説明されたように）プロセッサ内で統合され、メモリ１１４０及びコプロセッサ１１４５は、プロセッサ１１１０及び単一のチップにおいてＩＯＨ１１５０を有するコントローラハブ１１２０に直接結合される。
【００８２】
追加のプロセッサ１１１５の任意選択的な性質は、図１１において、破線で示される。各プロセッサ１１１０、１１１５は、本明細書において説明される処理コアの１つ又は複数を含んでよく、プロセッサ１０００の何らかのバージョンであってよい。
【００８３】
メモリ１１４０は、例えば、動的ランダムアクセスメモリ（ＤＲＡＭ）、相変化メモリ（ＰＣＭ）又はこれら２つの組み合わせであってよい。少なくとも１つの実施形態に関して、コントローラハブ１１２０は、フロントサイドバス（ＦＳＢ）のようなマルチドロップバス、ＱｕｉｃｋＰａｔｈ相互接続（ＱＰＩ）のようなポイントツーポイントインタフェース、又は同様の接続１１９５を介して、プロセッサ１１１０、１１１５との通信を行う。
【００８４】
一実施形態において、コプロセッサ１１４５は、例えば、高スループットＭＩＣプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、ＧＰＧＰＵ、埋め込みプロセッサ等のような特定用途向けプロセッサである。一実施形態において、コントローラハブ１１２０は、統合グラフィクスアクセラレータを含んでよい。
【００８５】
アーキテクチャ、マイクロアーキテクチャ、熱、電力消費特性等を含む広範囲な利益基準の観点から、物理リソース１１１０、１１１５間には様々な相違が存在し得る。
【００８６】
一実施形態において、プロセッサ１１１０は、一般的なタイプのデータ処理オペレーションを制御する命令を実行する。命令内に、コプロセッサ命令が埋め込まれてよい。プロセッサ１１１０は、これらのコプロセッサ命令を、取り付けられたコプロセッサ１１４５によって実行されるべきタイプのものであると認識する。従って、プロセッサ１１１０は、コプロセッサバス又は他の相互接続上において、これらのコプロセッサ命令（又はコプロセッサ命令を表す制御信号）を、コプロセッサ１１４５に発行する。コプロセッサ１１４５は、受信されたコプロセッサ命令を受理及び実行する。
【００８７】
ここで図１２を参照すると、本発明の実施形態に係る第１のより具体的な例示的システム１２００のブロック図が示される。図１２に示されるように、マルチプロセッサシステム１２００は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続１２５０を介して結合される第１のプロセッサ１２７０及び第２のプロセッサ１２８０を含む。プロセッサ１２７０及び１２８０の各々は、プロセッサ１０００の何らかのバージョンであってよい。本発明の一実施形態において、プロセッサ１２７０及び１２８０は、それぞれ、プロセッサ１１１０及び１１１５であり、コプロセッサ１２３８は、コプロセッサ１１４５である。他の実施形態において、プロセッサ１２７０及び１２８０は、それぞれ、プロセッサ１１１０及びコプロセッサ１１４５である。
【００８８】
プロセッサ１２７０及び１２８０は、それぞれ、統合メモリコントローラ（ＩＭＣ）ユニット１２７２及び１２８２を含むものとして示される。プロセッサ１２７０は、そのバスコントローラユニットの一部として、ポイントツーポイント（Ｐ−Ｐ）インタフェース１２７６及び１２７８をさらに含み、同様に、第２のプロセッサ１２８０は、Ｐ−Ｐインタフェース１２８６及び１２８８を含む。プロセッサ１２７０、１２８０は、Ｐ−Ｐインタフェース回路１２７８、１２８８を用いて、ポイントツーポイント（Ｐ−Ｐ）インタフェース１２５０を介して情報を交換してよい。図１２に示されるように、ＩＭＣ１２７２及び１２８２は、プロセッサをそれぞれのメモリ、すなわち、メモリ１２３２及びメモリ１２３４に結合する。これらは、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であってよい。
【００８９】
プロセッサ１２７０、１２８０は、各々、ポイントツーポイントインタフェース回路１２７６、１２９４、１２８６、１２９８を用いて、個々のＰ−Ｐインタフェース１２５２、１２５４を介してチップセット１２９０と情報を交換してよい。チップセット１２９０は、任意選択的に、高性能インタフェース１２３９を介して、コプロセッサ１２３８と情報を交換してよい。一実施形態において、コプロセッサ１２３８は、例えば、高スループットＭＩＣプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、ＧＰＧＰＵ、埋め込みプロセッサ等のような特定用途向けプロセッサである。
【００９０】
共有キャッシュ（不図示）は、いずれかのプロセッサ内、又は両方のプロセッサの外部に含まれてよく、プロセッサが低電力モードに置かれた場合に、いずれか又は両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納され得るように、Ｐ−Ｐ相互接続を介して、さらにプロセッサに接続されてよい。
【００９１】
チップセット１２９０は、インタフェース１２９６を介して第１のバス１２１６に結合されてよい。一実施形態において、第１のバス１２１６は、ペリフェラルコンポーネント相互接続（ＰＣＩ）バス、又はＰＣＩエクスプレスバスもしくは他の第３世代Ｉ／Ｏ相互接続バスのようなバスであってよいが、本発明の範囲は、このように限定されるものではない。
【００９２】
図１２に示されるように、様々なＩ／Ｏデバイス１２１４は、第１のバス１２１６を第２のバス１２２０に結合するバスブリッジ１２１８と共に、第１のバス１２１６に結合されてよい。一実施形態において、コプロセッサ、高スループットＭＩＣプロセッサ、ＧＰＧＰＵ、アクセラレータ（例えば、グラフィクスアクセラレータ又はデジタル信号処理（ＤＳＰ）ユニットのような）、フィールドプログラマブルゲートアレイ、又は任意の他のプロセッサのような１つ又は複数の追加のプロセッサ１２１５が、第１のバス１２１６に結合される。一実施形態において、第２のバス１２２０は、ローピンカウント（ＬＰＣ）バスであってよい。一実施形態において、例えば、キーボード及び／又はマウス１２２２、通信デバイス１２２７、ならびに命令／コード及びデータ１２３０を含み得るディスクドライブ又は他の大容量ストレージデバイスのようなストレージユニット１２２８を含む様々なデバイスが、第２のバス１２２０に結合されてよい。さらに、オーディオＩ／Ｏ１２２４が、第２のバス１２２０に結合されてよい。他のアーキテクチャが可能であることに留意されたい。例えば、図１２のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のこのようなアーキテクチャを実装してよい。
【００９３】
ここで図１３を参照すると、本発明の実施形態に係る第２のより具体的な例示的システム１３００のブロック図が示される。図１２及び１３における同様の要素は、同様の参照番号を付され、図１３の他の態様の妨げとなることを回避するために、図１２の特定の態様が、図１３から省略されている。
【００９４】
図１３は、プロセッサ１２７０、１２８０が統合メモリ及びＩ／Ｏ制御ロジック（「ＣＬ」）１２７２及び１２８２をそれぞれ含んでよいことを示す。そこで、ＣＬ１２７２、１２８２は、統合メモリコントローラユニットを含み、Ｉ／Ｏ制御ロジックを含む。図１３は、メモリ１２３２、１２３４がＣＬ１２７２、１２８２に結合されることのみならず、Ｉ／Ｏデバイス１３１４もが制御ロジック１２７２、１２８２に結合されることをも示す。レガシＩ／Ｏデバイス１３１５は、チップセット１２９０に結合される。
【００９５】
ここで図１４を参照すると、本発明の実施形態に係るＳｏＣ１４００のブロック図が示される。図１０における同様の要素は、同様の参照番号が付される。また、破線のボックスは、より進化したＳｏＣにおける任意選択的な機能である。図１４において、相互接続ユニット１４０２は、１つ又は複数のコア１３２Ａ−Ｎのセット及び共有キャッシュユニット１００６を含むアプリケーションプロセッサ１４１０と、システムエージェントユニット１０１０と、バスコントローラユニット１０１６と、統合メモリコントローラユニット１０１４と、統合グラフィクススロジック、画像プロセッサ、オーディオプロセッサ、及びビデオプロセッサを含み得る１つ又は複数のコプロセッサ１４２０セットと、静的ランダムアクセスメモリ（ＳＲＡＭ）ユニット１４３０と、ダイレクトメモリアクセス（ＤＭＡ）ユニット１４３２と、１つ又は複数の外部ディスプレイに結合するためのディスプレイユニット１４４０と、に結合される。一実施形態において、コプロセッサ１４２０は、例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、ＧＰＧＰＵ、高スループットＭＩＣプロセッサ、埋め込みプロセッサ等のような特定用途向けプロセッサを含む。
【００９６】
本明細書において開示されるメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、又はこのような実装アプローチの組み合わせで実装されてよい。本発明の実施形態は、少なくとも１つのプロセッサ、ストレージシステム（揮発性及び不揮発性メモリ及び／又はストレージ要素を含む）、少なくとも１つの入力デバイス、ならびに少なくとも１つの出力デバイスを備えるプログラマブルシステムにおいて実行されるコンピュータプログラム又はプログラムコードとして実装されてよい。
【００９７】
図１２に示されるコード１２３０のようなプログラムコードは、本明細書において説明される機能を実行し、出力情報を生成する入力命令に適用されてよい。出力情報は、１つ又は複数の出力デバイスに、公知の様式で適用されてよい。本願の目的のために、処理システムは、例えば、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、又はマイクロプロセッサのようなプロセッサを有する任意のシステムを含む。
【００９８】
プログラムコードは、処理システムとの通信を行うために、高レベルの手続き型又はオブジェクト指向のプログラミング言語で実装されてよい。プログラムコードは、望ましい場合には、アセンブリ又は機械語で実装されてもよい。実際に、本明細書において説明されるメカニズムは、いずれかの特定のプログラミング言語に、その範囲において限定されるものではない。いずれにせよ、言語は、コンパイル型又は解釈型言語であってよい。
【００９９】
少なくとも１つの実施形態の１つ又は複数の態様は、プロセッサ内の様々なロジックを表す機械可読媒体に格納された代表的な命令によって実装されてよい。これは、機械によって読み出された場合に、本明細書において説明される技術を実行するロジックを、機械に製造させる。「ＩＰコア」として知られるこのような表現は、有形の機械可読媒体に格納され、ロジック又はプロセッサを実際に製造する製造機械にロードされるべく、様々な顧客又は製造施設に供給されてよい。
【０１００】
このような機械可読記憶媒体は、ハードディスク、フロッピ（登録商標）ディスク、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）、及び光磁気ディスクを含む任意の他のタイプのディスクのような記憶媒体、リードオンリメモリ（ＲＯＭ）、動的ランダムアクセスメモリ（ＤＲＡＭ）、静的ランダムアクセスメモリメモリ（ＳＲＡＭ）のようなランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、及び相変化メモリ（ＰＣＭ）のような半導体デバイス、磁気もしくは光カード、又は電子的命令の格納に好適な任意の他のタイプの媒体を含む、機械又はデバイスにより製造又は形成される、非一時的で有形の構成の物品を含んでよいが、これらに限定されるものではない。
【０１０１】
従って、本発明の実施形態は、有形の非一時的機械可読媒体をさらに含む。これは、命令を含み、又は、本明細書において説明される構造、回路、装置、プロセッサ及び／又はシステム機能を定義するハードウェア記述言語（ＨＤＬ）のような設計データを含む。このような実施形態は、プログラム製品と称されてもよい。
【０１０２】
エミュレーション（バイナリトランスレーション、コード、モーフィング等を含む）  いくつかの場合には、命令コンバータは、命令をソース命令セットからターゲット命令セットに変換するために用いられてよい。例えば、命令コンバータは、命令を、コアによって処理される１つ又は複数の他の命令に（例えば、静的バイナリトランスレーション、動的コンパイルを含む動的バイナリトランスレーションを用いて）トランスレート、モーフィング、エミュレート、又は変換してよい。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、又はこれらの組み合わせで実装されてよい。命令コンバータは、オンプロセッサ、オフプロセッサ、又は一部がオンプロセッサで一部がオフプロセッサであってよい。
【０１０３】
図１５は、本発明の実施形態に係るソース命令セットにおけるバイナリ命令を、ターゲット命令セットにおけるバイナリ命令に変換するソフトウェア命令コンバータの利用を対比するブロック図である。図示される実施形態において、命令コンバータは、ソフトウェア命令コンバータであるが、あるいは、命令コンバータは、ソフトウェア、ファームウェア、ハードウェア、又はこれらの様々な組み合わせで実装されてよい。図１５は、少なくとも１つのｘ８６命令セットコアを有するプロセッサ１５１６によってネイティブで実行可能なｘ８６バイナリコード１５０６を生成するために、高水準言語１５０２のプログラムが、ｘ８６コンパイラ１５０４を用いてコンパイルされてよいことを示す。少なくとも１つのｘ８６命令セットコアを有するプロセッサ１５１６は、少なくとも１つのｘ８６命令セットコアを有するインテル（登録商標）プロセッサと実質的に同じ結果を実現するために、（１）インテル（登録商標）ｘ８６命令セットコアの命令セットの大部分、又は（２）少なくとも１つのｘ８６命令セットコアを有するインテル（登録商標）プロセッサ上で動作することをターゲットとするアプリケーション又は他のソフトウェアのオブジェクトコードバージョンを、互換的に実行又は処理することによって、少なくとも１つのｘ８６命令セットコアを有するインテル（登録商標）プロセッサと実質的に同じ機能を実行可能な任意のプロセッサを表す。ｘ８６コンパイラ１５０４は、追加のリンク処理を用いて、又は用いることなく、少なくとも１つのｘ８６命令セットコアを有するプロセッサ１５１６上で実行可能なｘ８６バイナリコード１５０６（例えば、オブジェクトコード）を生成するように動作可能なコンパイラを表す。同様に、図１５は、高水準言語１５０２のプログラムが代替的な命令セットコンパイラ１５０８を用いてコンパイルされることにより、少なくとも１つのｘ８６命令セットコアを有さないプロセッサ１５１４（例えば、カリフォルニア州サニーベールのＭＩＰＳ  ＴｅｃｈｎｏｌｏｇｉｅｓのＭＩＰＳ命令セットを実行するか、及び／又はカリフォルニア州サニーベールのＡＲＭ  ＨｏｌｄｉｎｇｓのＡＲＭ命令セットを実行するコアを有するプロセッサ）によってネイティブで実行可能な代替的な命令セットバイナリコード１５１０が生成されてよいことを示す。命令コンバータ１５１２は、ｘ８６バイナリコード１５０６を、ｘ８６命令セットコアを有さないプロセッサ１５１４によってネイティブで実行可能なコードに変換するために用いられる。この変換されたコードは、代替的な命令セットバイナリコード１５１０と同じである可能性が低い。なぜなら、この変換が可能な命令コンバータは、製造が困難だからである。しかしながら、変換されたコードは、一般的なオペレーションを実現し、代替的な命令セットからの命令で構成される。そこで、命令コンバータ１５１２は、エミュレーション、シミュレーション又は任意の他の処理を通じて、ｘ８６命令セットプロセッサ又はコアを有さないプロセッサ又は他の電子デバイスがｘ８６バイナリコード１５０６を実行することを可能にする、ソフトウェア、ファームウェア、ハードウェア、又はこれらの組み合わせを表す。
【０１０４】
図３−７ののいずれかに関して説明されるコンポーネント、機能、及び詳細は、任意選択的に、図１−２のいずれかに適用されてもよい。さらに、装置のいずれに関して説明されたコンポーネント、機能、及び詳細は、任意選択的に、実施形態において、このような装置によって、及び／又はこれらと共に実行され得る方法のいずれかに適用されてもよい。本明細書において説明されるプロセッサのいずれかは、本明細書（例えば、図１１−１４）において開示されるコンピュータシステムのいずれかに含まれてよい。いくつかの実施形態において、コンピュータシステムは、動的ランダムアクセスメモリ（ＤＲＡＭ）を含んでよい。あるいは、コンピュータシステムは、更新される必要がないタイプの揮発性メモリ又はフラッシュメモリを含んでよい。本明細書において開示される命令は、本明細書に示されるマイクロアーキテクチャのいずれかを有する、本明細書に示されるプロセッサのいずれかにより、本明細書に示されるシステムのいずれかにおいて実行されてよい。
【０１０５】
明細書及び特許請求の範囲において、「結合」及び／又は「接続」という用語は、これらの派生語と共に、用いられていてよい。これらの用語は、互いの同義語であることが意図されるものではない。むしろ、実施形態において、「接続」は、２つ又はより多くのエレメントが、互いに直接物理的及び／又は電気的に接触することを示すために用いられてよい。「結合」は、２つ又はより多くのエレメントが、互いに直接物理的及び／又は電気的に接触することを意味してよい。しかしながら、「結合」は、２つ又はより多くのエレメントが、互いに直接接触していないが、なお互いに連携又はやり取りすることを意味してもよい。例えば、実行ユニットは、１つ又は複数の介在するコンポーネントを通して、レジスタ及び／又はデコードユニットに結合されてよい。図において、矢印は、接続及び結合を示すために用いられる。
【０１０６】
「及び／又は」という用語が、用いられていてよい。本明細書において用いられるように、「及び／又は」という用語は、一方もしくは他方又は両方を意味する（例えば、Ａ及び／又はＢは、Ａ又はＢ、又はＡ及びＢの両方を意味する）。
【０１０７】
上記の説明において、実施形態を十分に理解せしめるために、具体的な詳細が示されている。しかしながら、他の実施形態は、これらの具体的な詳細のいくつかがなくとも実施可能である。本発明の範囲は、上述された具体例によって決定されるものではなく、以下の特許請求の範囲によってのみ決定されるものである。他の例において、周知の回路、構造、デバイス、及びオペレーションが、説明の理解の妨げとなることを回避するために、ブロック図の形式で、及び／又は詳細なく、示されている。適切とみなされる場合には、参照番号、又は参照番号の末尾部分は、図中で反復され、異なる規定がない又は異なることが自明ではない限り、任意選択的に同様の又は同じ特性を有し得る、対応する又は類似の要素を示す。
【０１０８】
特定のオペレーションは、ハードウェアコンポーネントによって実行されてよく、又は機械実行可能もしくは回路実行可能な命令で具現化されてよい。これらの命令は、命令によりプログラミングされた機械、回路、又はハードウェアコンポーネント（例えば、プロセッサ、プロセッサの一部、回路等）によるオペレーションの実行を発生させ、及び／又は、これをもたらすために用いられてよい。オペレーションは、任意選択的に、ハードウェア及びソフトウェアの組み合わせによって実行されてもよい。プロセッサ、機械、回路、又はハードウェアは、特有又は特定の回路を含んでよく、又は、他のロジック（例えば、ファームウェア及び／又はソフトウェアと組み合わせられる可能性のあるハードウェア）は、命令を実行及び／又は処理し、命令に応答して、結果を格納するように動作可能である。
【０１０９】
いくつかの実施形態は、機械可読媒体を含む製品（例えば、コンピュータプログラム製品）を含む。媒体は、機械可読形式で情報を提供する、例えば、格納するメカニズムを含んでよい。機械可読媒体は、命令又は一連の命令を提供、又はこれらを自身に格納してよい。これらの命令は、機械によって実行された場合及び／又はそのときに、本明細書において開示される１つ又は複数のオペレーション、方法、もしくは技術を機械に実行させ、及び／又は、機械によるこれらの実行をもたらすように動作可能である。
【０１１０】
いくつかの実施形態において、機械可読媒体は、非一時的機械可読記憶媒体を含んでよい。例えば、非一時的機械可読記憶媒体は、フロッピ（登録商標）ディスケット、光記憶媒体、光ディスク、光データストレージデバイス、ＣＤ−ＲＯＭ、磁気ディスク、光磁気ディスク、リードオンリメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、静的ＲＡＭ（ＳＲＡＭ）、動的ＲＡＭ（ＤＲＡＭ）、フラッシュメモリ、相変化メモリ、相変化データストレージ材料、不揮発性メモリ、不揮発性データストレージデバイス、非一時的メモリ、非一時的データストレージデバイス等を含んでよい。非一時的機械可読記憶媒体は、一時的な伝搬信号から構成されるものではない。いくつかの実施形態において、記憶媒体は、固形物を含む有形の媒体を含んでよい。
【０１１１】
好適な機械の例は、限定されるものではないが、汎用プロセッサ、特定用途向けプロセッサ、デジタル論理回路、集積回路等を含む。好適な機械のさらに他の例は、プロセッサ、デジタル論理回路、又は集積回路を含むコンピュータシステム又は他の電子デバイスを含む。このようなコンピュータシステム又は電子デバイスの例は、限定されるものではないが、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、ネットブック、スマートフォン、携帯電話、サーバ、ネットワークデバイス（例えば、ルータ及びスイッチ）、モバイルインターネットデバイス（ＭＩＤ）、メディアプレイヤ、スマートテレビ、ネットトップ、セットトップボックス、及びビデオゲームコントローラを含む。
【０１１２】
本明細書全体を通して、「一実施形態」、「実施形態」、「１つ又は複数の実施形態」、「いくつかの実施形態」という記載は、例えば、特定の機能が本発明の実施に含まれてよいが、必ずしも必須ではないことを示す。同様に、本明細書において、様々な機能が、単一の実施形態、図、又はその説明において、開示のストリームライン化及び様々な発明の態様の理解を支援することを目的として、共にグループ化される場合がある。しかしながら、この開示方法は、本発明が、各請求項に明示的に記載されるより多くの機能を必要とするという意図を反映するものと解釈されるべきものではない。むしろ、以下の特許請求の範囲が反映するように、発明の態様は、単一の開示された実施形態の全ての機能より少ない機能に基づく。そこで、詳細な説明に続く特許請求の範囲は、これにより、この詳細な説明に明示的に組み込まれ、各請求項は、本発明の別個の実施形態として独立している。
【０１１３】
［例示的実施形態］
以下の例は、さらなる実施形態に関する。例の詳細は、１つ又は複数の実施形態の任意の箇所において用いられてよい。
【０１１４】
例１は、パックドデータアライメントプラス演算命令をデコードするデコードユニットを含むプロセッサ又は他の装置である。パックドデータアライメントプラス演算命令は、第１の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第１のセットを示し、第２の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第２のセットを示し、少なくとも１つのデータエレメントオフセットを示し、デスティネーション格納位置を示す。装置は、デコードユニットに結合された実行ユニットをさらに含む。実行ユニットは、パックドデータアライメントプラス演算命令に応答して、結果パックドデータオペランドをデスティネーション格納位置に格納する。結果パックドデータオペランドは、その各々が、ソースパックドデータオペランドの第１のセットのデータエレメント及びソースパックドデータオペランドの第２のセットのデータエレメントのペアにより実行されたオペレーションの値を有する複数の結果データエレメントを含む。実行ユニットは、少なくとも１つのデータエレメントオフセットを、ソースパックドデータオペランドの第１及び第２のセットのうち少なくとも対応する１つに適用する。少なくとも１つのデータエレメントオフセットは、ソースパックドデータオペランドの第１及び第２のセットにおいて、各ペアのデータエレメント間の対応関係のあらゆる欠如に対抗する。
【０１１５】
例２は、例１のプロセッサを含む。ここで、デコードユニットは、１つ又は複数のソースパックドデータオペランドの第２のセットに対応する単一のデータエレメントオフセットのみを示す命令をデコードする。また、任意選択的に、ここで、各ペアのデータエレメントは、少なくとも１つのデータエレメントオフセットによって対抗される対応関係の欠如を有する。
【０１１６】
例３は、例１のプロセッサを含む。ここで、デコードユニットは、１つ又は複数のソースパックドデータオペランドの第１のセットに対応する第１のデータエレメントオフセット及び１つ又は複数のソースパックドデータオペランドの第２のセットに対応する第２のデータエレメントオフセットを示す命令をデコードする。
【０１１７】
例４は、例３のプロセッサを含む。ここで、各ペアのデータエレメントは、１つ又は複数のソースパックドデータオペランドの第１のセットに対する第１のデータエレメントオフセットの適用、及び１つ又は複数のソースパックドデータオペランドの第２のセットに対する第２のデータエレメントオフセットの適用によって対抗される対応関係の欠如を有する。
【０１１８】
例５は、例１のプロセッサを含む。ここで、デコードユニットは、第１のソースパックドデータオペランド及び第２のソースパックドデータオペランドを含むソースパックドデータオペランドの第１のセット、ならびに第３のソースパックドデータオペランド及び第４のソースパックドデータオペランドを含むソースパックドデータオペランドの第２のセットを示す命令をデコードする。
【０１１９】
例６は、例１のプロセッサを含む。ここで、デコードユニットは、単一の第１のソースパックドデータオペランドのみを含む１つ又は複数のソースパックドデータオペランドの第１のセット、ならびに第２のソースパックドデータオペランド及び第３のソースパックドデータオペランドを含むソースパックドデータオペランドの第２のセットを示す命令をデコードする。
【０１２０】
例７は、例６のプロセッサを含む。ここで、結果パックドデータオペランドは、任意選択的に、第１のソースパックドデータオペランド及び第２のソースパックドデータオペランドの各々と同数のデータエレメントを含む。
【０１２１】
例８は、例１のプロセッサを含む。ここで、デコードユニットは、単一の第１のソースパックドデータオペランドのみを含む１つ又は複数のソースパックドデータオペランドの第１のセット、ならびに単一の第２のソースパックドデータオペランドのみを含む１つ又は複数のソースパックドデータオペランドの第２のセットを示す命令をデコードし、実行ユニットは、第２のソースパックドデータオペランドより少ないデータエレメントを任意選択的に有する結果パックドデータオペランドを格納する。
【０１２２】
例９は、例１から８のいずれか１つのプロセッサを含む。ここで、デコードユニットは、少なくとも１つのデータエレメントオフセットのうち、複数の異なるデータエレメントオフセット値のいずれか１つを有することが可能なデータエレメントオフセットを示す命令をデコードする。
【０１２３】
例１０は、例１から８のいずれか１つのプロセッサを含む。ここで、デコードユニットは、少なくとも１つのデータエレメントオフセットのうち、（１）最下位ビット位置に向かう方向における、少なくとも１及び２のデータエレメント位置のいずれか１つのオフセット、（２）０のデータエレメント位置のオフセット、ならびに（３）最上位ビット位置に向かう方向における、少なくとも１及び２のデータエレメント位置のいずれか１つのオフセット、のいずれか１つであることが可能なデータエレメントオフセットを示す命令をデコードする。
【０１２４】
例１１は、例１から８のいずれか１つのプロセッサを含む。ここで、デコードユニットは、少なくとも１つのデータエレメントオフセットのうち、（１）最下位ビット位置に向かう方向における、少なくとも１、２、３、及び４のデータエレメント位置のいずれか１つのオフセット、（２）０のデータエレメント位置のオフセット、ならびに（３）最上位ビット位置に向かう方向における、少なくとも１、２、３、及び４のデータエレメント位置のいずれか１つのオフセット、のいずれか１つであることが可能なデータエレメントオフセットを示す命令をデコードする。
【０１２５】
例１２は、例１から８のいずれか１つのプロセッサを含む。ここで、実行ユニットは、命令に応答して、その各々が、データエレメントのペアにより実行されたオペレーションの値を有する結果データエレメントを有する結果パックドデータオペランドを格納し、オペレーションは、任意選択的に、加算、減算、乗算、除算、及び平均オペレーションの１つである。
【０１２６】
例１３は、例１から８のいずれか１つのプロセッサを含む。ここで、実行ユニットは、デコードされた命令に応答して、各ペアのデータエレメントに対して、垂直単一命令複数データ（ＳＩＭＤ）オペレーションを実行する。
【０１２７】
例１４は、例１から８のいずれか１つのプロセッサを含む。ここで、デコードユニットは、少なくとも１つのデータエレメントオフセットのデータエレメントオフセットの値を示す即値を任意選択的に有する命令をデコードする。
【０１２８】
例１５は、例１から８のいずれか１つのプロセッサを含む。ここで、デコードユニットは、少なくとも１つのデータエレメントオフセットのデータエレメントオフセットの値を示す値を格納するスカラレジスタを任意選択的に示す命令をデコードする。
【０１２９】
例１６は、例１から８のいずれか１つのプロセッサを含む。プロセッサは、実行ユニットを有するデジタル信号プロセッサの画像プロセッサユニットをさらに含む。
【０１３０】
例１７は、例１から８のいずれか１つのプロセッサを含む。プロセッサは、分岐を予測する任意選択的な分岐予測ユニットをさらに含む。プロセッサは、分岐予測ユニットに結合された、パックドデータアライメントプラス演算命令を含む命令をプリフェッチする任意選択的な命令プリフェッチユニットをさらに含んでよい。プロセッサは、命令プリフェッチユニットに結合された、命令を格納する任意選択的なレベル１（Ｌ１）命令キャッシュをさらに含んでよい。プロセッサは、データを格納する任意選択的なＬ１データキャッシュをさらに含んでよい。プロセッサは、データ及び命令を格納する任意選択的なレベル２（Ｌ２）キャッシュをさらに含んでよい。プロセッサは、デコードユニット、Ｌ１命令キャッシュ、及びＬ２キャッシュに結合された命令フェッチユニットであって、Ｌ１命令キャッシュ及びＬ２キャッシュの１つからのパックドデータアライメントプラス演算命令をフェッチし、パックドデータアライメントプラス演算命令をデコードユニットに提供する命令フェッチユニットをさらに含んでよい。プロセッサは、レジスタをリネーミングする任意選択的なレジスタリネーミングユニットをさらに含んでよい。プロセッサは、実行のためにパックドデータアライメントプラス演算命令からデコードされた１つ又は複数のオペレーションをスケジューリングする任意選択的なスケジューラをさらに含んでよい。プロセッサは、パックドデータアライメントプラス演算命令の実行結果をコミットする任意選択的なコミットユニットをさらに含んでよい。
【０１３１】
例１８は、パックドデータアライメントプラス演算命令を受信する段階を含む、プロセッサにおける方法である。パックドデータアライメントプラス演算命令は、第１の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第１のセットを示し、第２の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第２のセットを示し、少なくとも１つのデータエレメントオフセットを示し、デスティネーション格納位置を示してよい。方法は、パックドデータアライメントプラス演算命令に応答して、結果パックドデータオペランドをデスティネーション格納位置に格納する段階をさらに含む。結果パックドデータオペランドは、その各々が、ソースパックドデータオペランドの第１のセットからのデータエレメント及びソースパックドデータオペランドの第２のセットからのデータエレメントのペアにより実行されたオペレーションの値を有する複数の結果データエレメントを含む。各ペアのデータエレメントは、ソースパックドデータオペランドの第１及び第２のセットにおいて、非対応データエレメント位置にあったものである。非対応データエレメント位置は、パックドデータアライメントプラス演算命令によって示される少なくとも１つのデータエレメントオフセットに基づいて、異なっていたものである。
【０１３２】
例１９は、例１８の方法を含む。ここで、受信する段階は、単一のデータエレメントオフセットのみを示す命令を受信する段階を含み、非対応データエレメント位置は、単一のデータエレメントオフセットだけ異なる。
【０１３３】
例２０は、例１８の方法を含む。ここで、受信する段階は、１つ又は複数のソースパックドデータオペランドの第１のセットに対応する第１のデータエレメントオフセット、及び１つ又は複数のソースパックドデータオペランドの第２のセットに対応する第２のデータエレメントオフセットを示す命令を受信する段階を含む。非対応データエレメント位置は、任意選択的に、第１のデータエレメントオフセットと第２のデータエレメントオフセットとの間の差だけ異なる。
【０１３４】
例２１は、例１８の方法を含む。ここで、受信する段階は、ソースパックドデータオペランドの第１のセットの第１のソースパックドデータオペランド及び第２のソースパックドデータオペランドの両方を示し、ソースパックドデータオペランドの第２のセットの第３のソースパックドデータオペランド及び第４のソースパックドデータオペランドの両方を示す命令を受信する段階を含む。
【０１３５】
例２２は、例１８の方法を含む。ここで、受信する段階は、複数の異なるデータエレメントオフセット値のいずれか１つたり得るデータエレメントオフセットを示す命令を受信する段階を含む。
【０１３６】
例２３は、例１８から２２のいずれか１つの方法を含む。ここで、格納する段階は、その各々が、データエレメントのペアにより実行されたオペレーションの値を有する結果データエレメントを格納する段階を含み、オペレーションは、任意選択的に、加算オペレーション、減算オペレーション、乗算オペレーション、除算オペレーション、及び平均オペレーションの１つである。
【０１３７】
例２４は、例１８から２２のいずれか１つの方法を含む。方法は、データエレメントのペアにより、垂直単一命令複数データ（ＳＩＭＤ）オペレーションとして、オペレーションを実行する段階をさらに含む。
【０１３８】
例２５は、例１８から２２のいずれか１つの方法を含む。方法は、デジタル信号プロセッサによる画像処理中の画素フィルタリング中に実行される。
【０１３９】
例２６は、命令を処理するシステムである。システムは、相互接続及び相互接続に結合されたプロセッサを含む。プロセッサは、パックドデータアライメントプラス演算命令を受信する。パックドデータアライメントプラス演算命令は、第１の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第１のセットを示し、第２の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第２のセットを示し、少なくとも１つのデータエレメントオフセットを示し、デスティネーション格納位置を示す。プロセッサは、命令に応答して、結果パックドデータオペランドをデスティネーション格納位置に格納する。結果パックドデータオペランドは、その各々が、ソースパックドデータオペランドの第１のセットのデータエレメント及びソースパックドデータオペランドの第２のセットのデータエレメントのペアにより実行されたオペレーションの値を有する複数の結果データエレメントを含む。プロセッサは、少なくとも１つのデータエレメントオフセットを、ソースパックドデータオペランドの第１及び第２のセットのうち少なくとも対応する１つに適用する。少なくとも１つのデータエレメントオフセットは、ソースパックドデータオペランドの第１及び第２のセットにおいて、各ペアのデータエレメント間の対応関係のあらゆる欠如に対抗する。システムは、相互接続に結合された動的ランダムアクセスメモリ（ＤＲＡＭ）をさらに含む。ＤＲＡＭは、画素フィルタリングアルゴリズムを実行する命令セットを格納する。命令セットは、プロセッサによって実行された場合に、各々が異なるオフセットを含むパックドデータアライメントプラス演算命令の複数のインスタンスを、プロセッサに実行させる。
【０１４０】
例２７は、例２６のシステムを含む。ここで、命令は、複数の異なる値のいずれか１つたり得る第１のデータエレメントオフセットを示す。各ペアのデータエレメントは、任意選択的に、ソースオペランドの第１及び第２のセットにおいて、非対応データエレメント位置にあってよい。
【０１４１】
例２８は、非一時的機械可読記憶媒体を含む製品である。非一時的機械可読記憶媒体は、パックドデータアライメントプラス演算命令を格納する。命令は、第１の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第１のセットを示し、第２の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第２のセットを示し、少なくとも１つのデータエレメントオフセットを示し、デスティネーション格納位置を示す。命令は、機械によって実行された場合に、結果パックドデータオペランドをデスティネーション格納位置に格納することを含むオペレーションを、機械に実行させる。結果パックドデータオペランドは、その各々が、ソースパックドデータオペランドの第１のセットからのデータエレメント及びソースパックドデータオペランドの第２のセットからのデータエレメントのペアにより実行されたオペレーションの値を有する複数の結果データエレメントを含む。各ペアのデータエレメントは、ソースパックドデータオペランドの第１及び第２のセットにおいて、非対応データエレメント位置にあったものである。非対応データエレメント位置は、パックドデータアライメントプラス演算命令によって示される少なくとも１つのデータエレメントオフセットに基づいて異なっていたものである。
【０１４２】
例２９は、例２８の製品を含む。ここで、命令は、少なくとも１つのデータエレメントオフセットのうち、（１）最下位ビット位置に向かう方向における、少なくとも１及び２のデータエレメント位置のいずれか１つのオフセット、（２）０のデータエレメント位置のオフセット、ならびに（３）最上位ビット位置に向かう方向における、少なくとも１及び２のデータエレメント位置のいずれか１つのオフセット、のいずれか１つであることが可能なデータエレメントオフセットを示す。
【０１４３】
例３０は、パックドデータアライメントプラス演算命令をデコードするデコードユニットを含むプロセッサ又は他の装置である。パックドデータアライメントプラス演算命令は、第１の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第１のセットを示し、第２の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第２のセットを示し、少なくとも１つのデータエレメントオフセットを示し、デスティネーション格納位置を示す。プロセッサは、デコードユニットに結合された実行ユニットをさらに含む。実行ユニットは、パックドデータアライメントプラス演算命令に応答して、結果パックドデータオペランドをデスティネーション格納位置に格納する。結果パックドデータオペランドは、その各々が、ソースパックドデータオペランドの第１のセットのデータエレメント及びソースパックドデータオペランドの第２のセットの非対応データエレメントのペアにより実行されたオペレーションの値を有する複数の結果データエレメントを含む。各ペアの非対応データエレメントは、ソースパックドデータオペランドの第１及び第２のセットにおいて、非対応データエレメント位置にある。非対応データエレメント位置は、パックドデータアライメントプラス演算命令によって示される少なくとも１つのデータエレメントオフセットに基づいて異なる。
【０１４４】
例３１は、例１８から２５のいずれか１つの方法を実行する、又はこれを実行するように動作可能なプロセッサ又は他の装置である。
【０１４５】
例３２は、例１８から２５のいずれか１つの方法を実行するための手段を含むプロセッサ又は他の装置である。
【０１４６】
例３３は、命令を任意選択的に格納又は提供する非一時的機械可読媒体を任意選択的に含む製品である。命令は、プロセッサ、コンピュータシステム、電子デバイス、又は他の機械によって実行された場合及び／又はそのときに、例１８から２５のいずれか１つの方法を、機械に実行させるように動作可能である。例３４は、本明細書において実質的に説明されるようなプロセッサ又は他の装置である。
【０１４７】
例３５は、本明細書において実質的に説明されるような任意の方法を実行するように動作可能なプロセッサ又は他の装置である。
【０１４８】
例３６は、本明細書において実質的に説明されるような任意のパックドデータアライメントプラス演算命令を実行する（例えば、実行するコンポーネントを有する、又は実行するように動作可能な）プロセッサ又は他の装置である。
【０１４９】
例３７は、第１の命令セットの命令をデコードするデコードユニットを有するプロセッサを含むコンピュータシステム又は他の電子デバイスである。プロセッサは、１つ又は複数の実行ユニットをさらに有する。電子デバイスは、プロセッサに結合されたストレージデバイスをさらに含む。ストレージデバイスは、第１の命令を格納する。当該命令は、本明細書において実質的に開示されたようなパックドデータアライメントプラス演算命令のいずれかであってよく、第２の命令セットに含まれる。ストレージデバイスは、第１の命令を、第１の命令セットの１つ又は複数の命令に変換する命令をさらに格納する。第１の命令セットの１つ又は複数の命令は、プロセッサによって実行された場合に、第１の命令によって規定されるようなアーキテクチャ上の影響を、プロセッサに有させる。
【図１】
2018516400.tif 000003
【図２】
2018516400.tif 000004
【図３】
2018516400.tif 000005
【図４】
2018516400.tif 000006
【図５】
2018516400.tif 000007
【図６】
2018516400.tif 000008
【図７】
2018516400.tif 000009
【図８Ａ】
2018516400.tif 000010
【図８Ｂ】
2018516400.tif 000011
【図９Ａ】
2018516400.tif 000012
【図９Ｂ】
2018516400.tif 000013
【図１０】
2018516400.tif 000014
【図１１】
2018516400.tif 000015
【図１２】
2018516400.tif 000016
【図１３】
2018516400.tif 000017
【図１４】
2018516400.tif 000018
【図１５】
2018516400.tif 000019
【手続補正書】
【提出日】平成30年1月4日(2018.1.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
パックドデータアライメントプラス演算命令をデコードするデコードユニットであって、前記パックドデータアライメントプラス演算命令は、第１の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第１のセットを示し、第２の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第２のセットを示し、少なくとも１つのデータエレメントオフセットを示し、デスティネーション格納位置を示す、デコードユニットと、
前記デコードユニットに結合された実行ユニットであって、前記実行ユニットは、前記パックドデータアライメントプラス演算命令に応答して、結果パックドデータオペランドを前記デスティネーション格納位置に格納し、前記結果パックドデータオペランドは、その各々が、前記１つ又は複数のソースパックドデータオペランドの前記第１のセットのデータエレメント及び前記１つ又は複数のソースパックドデータオペランドの前記第２のセットのデータエレメントのペアにより実行されたオペレーションの値を有する複数の結果データエレメントを含む、実行ユニットと、
を備え、
前記実行ユニットは、前記少なくとも１つのデータエレメントオフセットを、前記１つ又は複数のソースパックドデータオペランドの前記第１のセット及び前記第２のセットのうち少なくとも対応する１つに適用し、前記少なくとも１つのデータエレメントオフセットは、前記１つ又は複数のソースパックドデータオペランドの前記第１のセット及び前記第２のセットにおける各ペアの前記データエレメント間の対応関係のあらゆる欠如に対抗する、
プロセッサ。
【請求項２】
前記デコードユニットは、前記１つ又は複数のソースパックドデータオペランドの前記第２のセットに対応する単一のデータエレメントオフセットのみを示す前記パックドデータアライメントプラス演算命令をデコードし、各ペアの前記データエレメントは、前記少なくとも１つのデータエレメントオフセットによって対抗される対応関係の欠如を有する、
請求項１に記載のプロセッサ。
【請求項３】
前記デコードユニットは、前記１つ又は複数のソースパックドデータオペランドの前記第１のセットに対応する第１のデータエレメントオフセット及び前記１つ又は複数のソースパックドデータオペランドの前記第２のセットに対応する第２のデータエレメントオフセットを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１に記載のプロセッサ。
【請求項４】
各ペアの前記データエレメントは、前記１つ又は複数のソースパックドデータオペランドの前記第１のセットに対する前記第１のデータエレメントオフセットの適用、及び前記１つ又は複数のソースパックドデータオペランドの前記第２のセットに対する前記第２のデータエレメントオフセットの適用によって対抗される対応関係の欠如を有する、
請求項３に記載のプロセッサ。
【請求項５】
前記デコードユニットは、第１のソースパックドデータオペランド及び第２のソースパックドデータオペランドを含む前記１つ又は複数のソースパックドデータオペランドの前記第１のセット、ならびに第３のソースパックドデータオペランド及び第４のソースパックドデータオペランドを含む前記１つ又は複数のソースパックドデータオペランドの前記第２のセットを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１に記載のプロセッサ。
【請求項６】
前記デコードユニットは、単一の第１のソースパックドデータオペランドのみを含む前記１つ又は複数のソースパックドデータオペランドの前記第１のセット、ならびに第２のソースパックドデータオペランド及び第３のソースパックドデータオペランドを含む前記１つ又は複数のソースパックドデータオペランドの前記第２のセットを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１に記載のプロセッサ。
【請求項７】
前記結果パックドデータオペランドは、前記第１のソースパックドデータオペランド及び前記第２のソースパックドデータオペランドの各々と同数のデータエレメントを含む、
請求項６に記載のプロセッサ。
【請求項８】
前記デコードユニットは、単一の第１のソースパックドデータオペランドのみを含む前記１つ又は複数のソースパックドデータオペランドの前記第１のセット、ならびに単一の第２のソースパックドデータオペランドのみを含む前記１つ又は複数のソースパックドデータオペランドの前記第２のセットを示す前記パックドデータアライメントプラス演算命令をデコードし、前記実行ユニットは、前記第２のソースパックドデータオペランドより少ないデータエレメントを有する前記結果パックドデータオペランドを格納する、
請求項１に記載のプロセッサ。
【請求項９】
前記デコードユニットは、前記少なくとも１つのデータエレメントオフセットのうち、複数の異なるデータエレメントオフセット値のいずれか１つを有することが可能なデータエレメントオフセットを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１０】
前記デコードユニットは、前記少なくとも１つのデータエレメントオフセットのうち、
最下位ビット位置に向かう方向における、少なくとも１及び２のデータエレメント位置のいずれか１つのオフセット、
０のデータエレメント位置のオフセット、ならびに
最上位ビット位置に向かう方向における、少なくとも１及び２のデータエレメント位置のいずれか１つのオフセット
のいずれか１つであることが可能なデータエレメントオフセットを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１１】
前記デコードユニットは、前記少なくとも１つのデータエレメントオフセットのうち、
最下位ビット位置に向かう方向における、少なくとも１、２、３、及び４のデータエレメント位置のいずれか１つのオフセット、
０のデータエレメント位置のオフセット、ならびに
最上位ビット位置に向かう方向における、少なくとも１、２、３、及び４のデータエレメント位置のいずれか１つのオフセット
のいずれか１つであることが可能なデータエレメントオフセットを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１２】
前記実行ユニットは、前記パックドデータアライメントプラス演算命令に応答して、その各々が、前記データエレメントの前記ペアにより実行された前記オペレーションの前記値を有する結果データエレメントを有する前記結果パックドデータオペランドを格納し、前記オペレーションは、加算、減算、乗算、除算、及び平均オペレーションの１つである、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１３】
前記実行ユニットは、デコードされた前記パックドデータアライメントプラス演算命令に応答して、各ペアの前記データエレメントに対して、垂直単一命令複数データ（ＳＩＭＤ）オペレーションを実行する、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１４】
前記デコードユニットは、
前記少なくとも１つのデータエレメントオフセットのデータエレメントオフセットの値を示す即値の１つを有し、かつ、前記少なくとも１つのデータエレメントオフセットのデータエレメントオフセットの値を示す値を格納するスカラレジスタを示す前記パックドデータアライメントプラス演算命令をデコードする、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１５】
前記実行ユニットを有するデジタル信号プロセッサの画像プロセッサユニットをさらに備える、
請求項１から８のいずれか１項に記載のプロセッサ。
【請求項１６】
プロセッサにおける方法であって、
パックドデータアライメントプラス演算命令を受信する段階であって、前記パックドデータアライメントプラス演算命令は、第１の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第１のセットを示し、第２の複数のデータエレメントを含む１つ又は複数のソースパックドデータオペランドの第２のセットを示し、少なくとも１つのデータエレメントオフセットを示し、デスティネーション格納位置を示す、段階と、
前記パックドデータアライメントプラス演算命令に応答して、結果パックドデータオペランドを前記デスティネーション格納位置に格納する段階であって、前記結果パックドデータオペランドは、その各々が、前記１つ又は複数のソースパックドデータオペランドの前記第１のセットからのデータエレメント及び前記１つ又は複数のソースパックドデータオペランドの前記第２のセットからのデータエレメントのペアにより実行されたオペレーションの値を有する複数の結果データエレメントを含み、各ペアの前記データエレメントは、前記１つ又は複数のソースパックドデータオペランドの前記第１のセット及び前記第２のセットにおいて非対応データエレメント位置にあったものであり、前記非対応データエレメント位置は、前記パックドデータアライメントプラス演算命令によって示される少なくとも１つのデータエレメントオフセットに基づいて異なっていたものである、段階と、
を備える方法。
【請求項１７】
受信する段階は、単一のデータエレメントオフセットのみを示す前記パックドデータアライメントプラス演算命令を受信する段階を含み、前記非対応データエレメント位置は、前記単一のデータエレメントオフセットだけ異なる、
請求項１６に記載の方法。
【請求項１８】
受信する段階は、前記１つ又は複数のソースパックドデータオペランドの前記第１のセットに対応する第１のデータエレメントオフセット及び前記１つ又は複数のソースパックドデータオペランドの前記第２のセットに対応する第２のデータエレメントオフセットを示す前記パックドデータアライメントプラス演算命令を受信する段階を含み、前記非対応データエレメント位置は、前記第１のデータエレメントオフセットと前記第２のデータエレメントオフセットとの間の差だけ異なる、
請求項１６に記載の方法。
【請求項１９】
受信する段階は、前記１つ又は複数のソースパックドデータオペランドの前記第１のセットの第１のソースパックドデータオペランド及び第２のソースパックドデータオペランドの両方を示し、前記１つ又は複数のソースパックドデータオペランドの前記第２のセットの第３のソースパックドデータオペランド及び第４のソースパックドデータオペランドの両方を示す前記パックドデータアライメントプラス演算命令を受信する段階を含む、
請求項１６に記載の方法。
【請求項２０】
格納する段階は、その各々が、前記データエレメントの前記ペアにより実行された前記オペレーションの前記値を有する前記複数の結果データエレメントを格納する段階を含み、前記オペレーションは、加算オペレーション、減算オペレーション、乗算オペレーション、除算オペレーション、及び平均オペレーションの１つである、
請求項１６に記載の方法。
【請求項２１】
前記データエレメントの前記ペアにより、垂直単一命令複数データ（ＳＩＭＤ）オペレーションとして前記オペレーションを実行する段階をさらに備え、前記方法は、デジタル信号プロセッサによる画像処理中の画素フィルタリング中に実行される、
請求項１６に記載の方法。
【請求項２２】
請求項１６から２１のいずれか１項に記載の方法を実行するための手段を備える装置。
【請求項２３】
機械によって実行された場合に、請求項１６から２１のいずれか１項に記載の方法を、前記機械に実行させるためのプログラム。
【請求項２４】
相互接続と、
前記相互接続に結合された請求項１から８のいずれか１項に記載のプロセッサと、
前記相互接続に結合された動的ランダムアクセスメモリ（ＤＲＡＭ）であって、画素フィルタリングアルゴリズムを実行する命令セットを格納するＤＲＡＭと、
を備え、
前記命令セットは、前記プロセッサによって実行された場合に、前記パックドデータアライメントプラス演算命令の複数のインスタンスを、各々異なるオフセットにより前記プロセッサに実行させる、
システム。
【請求項２５】
請求項２３に記載のプログラムを格納するコンピュータ可読記憶媒体。
【国際調査報告】
2018516400.tif 000020
2018516400.tif 000021
2018516400.tif 000022