JP2014199663A - マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム - Google Patents

マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム Download PDF

Info

Publication number
JP2014199663A
JP2014199663A JP2014058424A JP2014058424A JP2014199663A JP 2014199663 A JP2014199663 A JP 2014199663A JP 2014058424 A JP2014058424 A JP 2014058424A JP 2014058424 A JP2014058424 A JP 2014058424A JP 2014199663 A JP2014199663 A JP 2014199663A
Authority
JP
Japan
Prior art keywords
packed data
operand
data
narrow
mask
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014058424A
Other languages
English (en)
Other versions
JP5829714B2 (ja
Inventor
ティー. グロチョウスキ、エドワード
T Grochowski Edward
ティー. グロチョウスキ、エドワード
ヤーヤ ソトゥデ、セイド
Yahya Sotoudeh Seyed
ヤーヤ ソトゥデ、セイド
メイソン ガイ、ビュフォード
Mason Guy Buford
メイソン ガイ、ビュフォード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2014199663A publication Critical patent/JP2014199663A/ja
Application granted granted Critical
Publication of JP5829714B2 publication Critical patent/JP5829714B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders

Abstract

【課題】より広いパックドデータオペランドを利用する命令が存在する場合に、それより狭いパックドデータオペランドを利用する旧式の命令をサポートする後方互換性を提供する。
【解決手段】デコーダユニットは第1の狭いソースパックドデータオペランド及びデスティネーションオペランドを示すパックドデータ命令を、第1の狭いソースオペランドよりも広く当該第1の狭いソースオペランドを含む広いソースパックドデータオペランド及びデスティネーションオペランドを示すマスクされたパックドデータ演算にマッピングする。このマスクされたパックドデータ演算に対応するパックドデータ演算マスクが生成される。マスクされた演算は、パックドデータ演算マスクを用いて実行される。パックドデータ命令の演算結果は、広いデスティネーションオペランドにストアされる。
【選択図】図1

Description

本明細書に説明される実施形態は、包括的には、プロセッサに関する。特に、本明細書に説明される実施形態は、包括的には、プロセッサ内のレジスタにアクセスすることに関する。
多くのプロセッサは、単一命令複数データ(SIMD)アーキテクチャを有する。SIMDアーキテクチャでは、パックドデータ命令、ベクトル命令、又はSIMD命令が、複数のデータ要素又は複数対のデータ要素に同時又は並列に動作することができる。プロセッサは、バックドデータ命令に応答する並列実行ハードウェアを有し、複数の演算を同時又はパラレルに実行することができる。
複数のデータ要素を1つのレジスタ又はメモリロケーション内にパックドデータとしてパックすることができる。パックドデータでは、レジスタ又は他の記憶ロケーションのビットをデータ要素のシーケンスに論理的に分割することができる。例えば、128ビット幅のパックドデータレジスタは、2つの64ビット幅のデータ要素、4つの32ビットデータ要素、8つの16ビットデータ要素等を有することができる。
幾つかのプロセッサアーキテクチャでは、命令によって用いられるパックドデータオペランドの幅が何年もかけて増加されてきた。そのような増加したパックドデータ幅は、一般に、より多くのデータ要素を同時に又は並列に処理することを可能にし、これによって、性能が改善される傾向がある。より広いパックドデータオペランドを利用する命令が存在する場合であっても、一般的には、依然として、それより狭いパックドデータオペランドを利用する旧式の命令をサポートすること、例えば、後方互換性を提供することが望ましい。その上、多くの場合、狭いパックドデータオペランドをストアするのに用いられる狭いレジスタは、広い又は拡張されたパックドデータオペランドをストアするのに用いられる広いレジスタ上にエイリアスされる場合がある。
本発明は、本発明の実施形態を例示するのに用いられる以下の説明及び添付図面を参照することによって最もよく理解することができる。
プロセッサの一実施形態のブロック図である。
一組の好適なパックドデータレジスタの第1の実施形態のブロック図である。
幾つかのプロセッサにおける既存の一組のレジスタのブロック図である。
一組の好適なパックドデータレジスタの第2の実施形態のブロック図である。
命令処理装置の一実施形態のブロック図である。
プロセッサにおける方法の一実施形態のブロック流れ図である。
部分レジスタアクセス命令に応答して、広いオペランド上にオーバーレイされた狭いオペランドに対して実行することができる部分レジスタアクセス演算を示すブロック図である。
狭いオペランドを示す部分レジスタアクセスパックドデータ命令に応答して実行することができる広いオペランドに対するマスクされたフルレジスタアクセスパックドデータ演算の一例示の実施形態のブロック図である。
部分レジスタアクセス命令に応答して、広いオペランド上にオーバーレイされた狭いオペランドに対して実行することができる部分レジスタアクセス演算を示すブロック図である。
狭いオペランドを示す部分レジスタアクセスパックドデータ命令に応答して実行することができる広いオペランドに対するマスクされたフルレジスタアクセスパックドデータ演算の一例示の実施形態のブロック図である。
部分レジスタアクセス命令に応答して、広いオペランド上にオーバーレイされた狭いオペランドの対応しないデータ要素に対して実行することができる部分レジスタアクセス演算を示すブロック図である。
広いオペランドの対応するデータ要素に対して実行することができ、狭いオペランドの対応しないデータ要素に対する演算を示す部分レジスタアクセスパックドデータ命令に応答して実行することができる、マスクされたフルレジスタアクセスパックドデータ演算の一例示の実施形態のブロック図である。
パックドデータ演算マスクビットの数がパックドデータ幅及びパックドデータ要素幅に依存することを示すテーブルである。
好適な一組のパックドデータ演算マスクレジスタの一例示の実施形態のブロック図である。
パックドデータ演算マスクとして用いられ及び/又はマスキングに用いられるビット数がパックドデータ幅及びデータ要素幅に依存し得ることを示す図である。
本発明の実施形態による例示的なインオーダーパイプライン及び例示的なレジスタリネームアウトオブオーダー発行/実行パイプラインの双方を示すブロック図である。
本発明の実施形態によるプロセッサに備えられるインオーダーアーキテクチャコアの例示的な実施形態及び例示的なレジスタリネームアウトオブオーダー発行/実行アーキテクチャコアの双方を示すブロック図である。
本発明の実施形態による単一のプロセッサコアを、オンダイ相互接続ネットワークへのその接続及びレベル2(L2)キャッシュのそのローカルサブセットとともに示すブロック図である。
本発明の実施形態による図16Aにおけるプロセッサコアの一部の拡大図である。
本発明の実施形態による、2つ以上のコアを有することができ、統合メモリコントローラーを有することができ、統合グラフィックスを有することができるプロセッサのブロック図である。
本発明の1つの実施形態によるシステムのブロック図である。
本発明の一実施形態による第1のより具体的な例示的システムのブロック図である。
本発明の一実施形態による第2のより具体的な例示的システムのブロック図である。
本発明の一実施形態によるSoCのブロック図である。
本発明の実施形態による、ソース命令セット内のバイナリー命令をターゲット命令セット内のバイナリー命令に変換するソフトウェア命令変換器の使用を対比するブロック図である。
本明細書では、部分レジスタアクセス方法、プロセッサ、及びシステムが開示される。以下の説明では、多数の具体的な詳細(例えば、具体的なレジスタ、命令、マスク、部分レジスタアクセスを実行する方法、ロジック実施態様、プロセッサ構成、マイクロアーキテクチャの詳細、演算のシーケンス、ロジック分割/統合の詳細、システム構成要素のタイプ及び相互関係等)が述べられる。しかしながら、本発明の実施形態は、これらの具体的な詳細がなくても実施することができることが理解される。それ以外の場合には、この説明の理解を妨げないように、よく知られた回路、構造、及び技法は詳細に示されていない。
図1は、プロセッサ100の一実施形態のブロック図である。幾つかの実施形態では、このプロセッサは、汎用プロセッサ(例えば、様々なタイプのコンピューターシステムにおいて中央処理ユニットとして用いられるタイプの汎用マイクロプロセッサ)とすることができる。代替的に、プロセッサは、専用プロセッサとすることができる。好適な専用プロセッサの例には、ほんの数例を挙げると、ネットワークプロセッサ、通信プロセッサ、暗号プロセッサ、グラフィックスプロセッサ、コプロセッサ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、及びコントローラー(例えばマイクロコントローラー)が含まれるが、これらに限定されるものではない。プロセッサは、様々な複合命令セットコンピューティング(CISC)プロセッサ、様々な縮小命令セットコンピューティング(RISC)プロセッサ、様々な超長命令語(VLIW)プロセッサ、それらの様々なハイブリッド、又は完全に他のタイプのプロセッサのうちの任意のものとすることができる。
このプロセッサは命令セット102を有する。この命令セットの命令は、実行のためにプロセッサに提供されるマクロ命令、アセンブリ言語命令、又は機械レベル命令を表す。この命令セットは、1つ又は複数の部分レジスタアクセスパックドデータ命令103を含む。幾つかの実施形態では、部分レジスタアクセスパックドデータ命令は、レジスタの全幅ではないレジスタの一部のみを表す1つ又は複数のソースオペランド及び/又はデスティネーションオペランドにアクセスする命令を表すことができる。一例として、部分レジスタアクセスパックドデータ命令は、512ビットレジスタにストアされた128ビットのソースオペランド及びデスティネーションオペランドにアクセスする命令を表すことができる。命令セットは、オプションとして、1つ又は複数のマスクされたパックドデータ命令104も含む。オプションとして、このマスクされたパックドデータ命令(複数の場合もある)は、1つ又は複数のマスクされたフルレジスタアクセス命令104Bを含む。幾つかの実施形態では、マスクされたフルレジスタアクセス命令は、レジスタの全幅を表すか又は占有する1つ又は複数のソースオペランド及び/又はデスティネーションオペランドにアクセスする命令を表すことができる。一例として、マスクされたフルレジスタアクセス命令は、512ビットレジスタにストアされた512ビットのソースオペランド及びデスティネーションオペランドにアクセスする命令を表すことができる。
プロセッサは、アーキテクチャ的に可視のレジスタ(例えば、アーキテクチャレジスタファイル)105を含む。アーキテクチャレジスタは、本明細書においては、単にレジスタと呼ばれる場合もある。特に別段の指定がないか又は明らかでない限り、アーキテクチャレジスタ、レジスタファイル、及びレジスタという語句は、本明細書においては、ソフトウェア及び/又はプログラマーに可視のレジスタ、及び/又はオペランドを識別するためにマクロ命令によって指定されるレジスタを指すのに用いられる。これらのレジスタは、所与のマイクロアーキテクチャにおける他の非アーキテクチャレジスタ又はアーキテクチャ的に可視でないレジスタ(例えば、命令によって用いられる一時レジスタ、リオーダーバッファー、リタイアメントレジスタ等)と対照をなす。これらのレジスタは、一般に、オンダイプロセッサ記憶ロケーションを表す。図示したレジスタは、スカラー汎用レジスタ106、パックドデータレジスタ107、及びオプションのパックドデータ演算マスクレジスタ108を含む。
プロセッサは、実行ロジック109(例えば、1つ又は複数の実行ユニット)も備える。この実行ロジックは、命令セットの命令を実行又は処理するように動作可能である。例えば、この実行ロジックは、部分レジスタアクセスパックドデータ命令(複数の場合もある)103及びマスクされたフルレジスタアクセスパックドデータ命令(複数の場合もある)104Bを実行又は処理するように動作可能とすることができる。
図2は、一組の好適なパックドデータレジスタ207の第1の実施形態のブロック図である。図示したパックドデータレジスタは、32個の512ビット幅のパックドレジスタ又はベクトルレジスタを含む。これらの32個の512ビットレジスタは、ZMM0〜ZMM31のラベルが付けられている。これらの512ビットレジスタのうちの下位16個は、ZMM0〜ZMM15である。図示するように、幾つかの実施形態では、ZMM0レジスタ〜ZMM15レジスタの低順序の256ビットは、それぞれの256ビットパックドレジスタ又はベクトルレジスタYMM0〜YMM15上にエイリアス又はオーバーレイされているが、これは必須ではない。同様に、幾つかの実施形態では、YMM0レジスタ〜YMM15レジスタの低順序の128ビットは、それぞれの128ビットパックドレジスタ又はベクトルレジスタXMM0〜XMM15上にエイリアス又はオーバーレイされているが、これも必須ではない。
512ビットレジスタZMM0〜ZMM31はそれぞれ、512ビットパックドデータ、256ビットパックドデータ、又は128ビットパックドデータを保持するように動作可能である。256ビットレジスタYMM0〜YMM15はそれぞれ、256ビットパックドデータ又は128ビットパックドデータを保持するように動作可能である。128ビットレジスタXMM0〜XMM1はそれぞれ、128ビットパックドデータを保持するように動作可能である。少なくとも8ビットバイトデータ、16ビットワードデータ、32ビットダブルワードデータ、32ビット単精度浮動小数点データ、64ビットクワッドワードデータ、及び64ビット倍精度浮動小数点データを含む異なるデータ要素サイズがサポートされる。パックドデータレジスタの代替の実施形態は、異なる数のレジスタ、異なるサイズのレジスタを含むことができ、大きい側のレジスタを小さい側のレジスタ上にエイリアスする場合もあるし、しない場合もある。
歴史的に、プロセッサは、当初、XMMレジスタしか備えていなかった。命令セット内の命令は、XMMレジスタに対して演算を行った。後に、パックド幅又はベクトル幅を増加させるためにYMMレジスタが加えられ、より多くのデータ要素を同時又は並列に処理することが可能になった。これらのより広いYMMレジスタに対して演算を行う新たな命令が命令セットに加えられた。最近になって、パックド幅又はベクトル幅を更に増加させるZMMレジスタが加えられ、更に多くのデータ要素を同時又は並列に処理することが可能になった。これらの更に広いZMMレジスタに対して演算を行う追加の新たな命令が命令セットに加えられた。これらのより新しい命令及びより広いパックドデータ幅が利用可能であっても、依然として、一般的には、後方互換性を提供し、旧式の命令を依然としてサポートすることが望ましい。例えば、プロセッサはXMMレジスタ及びYMMレジスタに対して演算を行う旧式の命令を継続してサポートすることが一般的には望ましい。しかしながら、XMMレジスタ及びYMMレジスタは、それよりも広いZMMレジスタ上にエイリアス又はオーバーレイされるので、これらの命令の使用は、多くの場合、広い512ビットレジスタ内にストアされた狭いXMMオペランド及び/又はYMMオペランドへの部分レジスタアクセスを伴う。
図3Aは、幾つかのプロセッサ内の既存の一組のアーキテクチャレジスタ310のブロック図である。図示したレジスタは、4つの64ビットパックドデータレジスタP0〜P3を含むが、オプションとしてより多くのレジスタを含むことができる。これらの4つの64ビットパックドデータレジスタは、論理的には、その数の2分の1、説明図では2つの128ビットパックドデータレジスタQ0及びQ1として見ることもできる。128ビットレジスタQ0の最低順序の64ビット(すなわち、ビット63:0)は、64ビットレジスタP0に対応するのに対して、128ビットレジスタQ0の最高順序の64ビット(すなわち、ビット127:64)は、64ビットレジスタP1に対応する。同様に、128ビットレジスタQ1の最低順序の64ビット(すなわち、ビット63:0)は、64ビットレジスタP2に対応するのに対して、128ビットレジスタQ1の最高順序の64ビット(すなわち、ビット127:64)は、64ビットレジスタP3に対応する。
図2の手法に示すようにエイリアシングを用いてパックドデータレジスタの幅を増加させる代わりに、これらの既存のレジスタに用いられるこの手法は、狭い64ビットP0〜P3レジスタの隣接する対を論理的にともにグルーピングしてそれよりも広い128ビットQ0及びQ1レジスタを形成することである。しかしながら、複数の狭いパックドデータレジスタを論理的にグルーピングして単一のそれよりも広いパックドデータレジスタを形成するそのような手法に伴う1つの起こり得る欠点は、広いパックドデータレジスタの数が減少することである。64ビットレジスタの数の2分の1の128ビットレジスタしか存在しない。その上、この問題は、128ビットよりも更に広いパックドデータ幅が検討されるときに悪化するおそれがある。なぜならば、これは、3つ以上の狭いレジスタを論理的にグルーピングして、単一のそれよりも広いレジスタを作成することを伴う場合があるからである。例えば、4つの64ビットレジスタが、各256ビットレジスタを作成するのに必要とされる場合がある。
図3Bは、一組の好適なアーキテクチャパックドデータレジスタ307の第2の実施形態のブロック図である。1つの態様では、レジスタ307は、図3Aの既存のレジスタ310の拡幅/拡張された互換バージョンを表すことができる。レジスタ307は、4つの広い256ビットパックドデータレジスタR0〜R3を含む。これらの4つの広い256ビットパックドデータレジスタR0〜R3は、既存のレジスタP0〜P3並びにQ0及びQ1を実施する。図示するように、幾つかの実施形態では、R0〜R3レジスタの低順序の64ビットは、それぞれの64ビットレジスタP0〜P3に重なり、R0〜R3レジスタの低順序の128ビットは、それぞれの128ビットレジスタQ0〜Q3に重なるが、これは必須ではない。様々な実施形態では、例えば、16個、32個、64個、又は他の或る数のレジスタ等、任意の所望の数のそのような256ビットレジスタが存在し得る。他の実施形態では、256ビットレジスタの代わりに、512ビットレジスタ、1024ビットレジスタ、又は256ビットよりも広いか若しくは狭い他の幅を用いることができる。例えば、8ビットバイト、16ビットワード、32ビットダブルワード、32ビット単精度浮動小数点、64ビットクワッドワード、64ビット倍精度浮動小数点、又はそれらの様々な組み合わせを含む種々のデータ要素サイズをサポートすることができる。
既存/レガシー命令は、それでもP0〜P3レジスタ及び/又はQ0及びQ1レジスタを指定することができ、そのような既存/レガシー命令を廃止(deprecating)するには何年又は何十年もかかる場合があるので、後方互換性を提供すること及び既存/レガシー命令もサポートすることを可能にすることが重要であり得る。例えば、既存/レガシー命令がP0〜P3レジスタ及び/又はQ0及びQ1レジスタに対して演算を行うことを可能にすることが依然として重要であり得る。しかしながら、P0〜P3レジスタ及び/又はQ0及びQ1レジスタが(例えば、図3Bに示すように)それらよりも広いレジスタ上にオーバーレイされている場合、そのような命令の実行は、広いレジスタ上にオーバーレイされたP0〜P3レジスタ及び/又はQ0及びQ1レジスタからデータを読み出し及び/又は当該レジスタにデータを書き込む部分レジスタアクセスを伴う場合がある。
図4は、命令処理装置400の一実施形態のブロック図である。幾つかの実施形態では、この命令処理装置は、プロセッサとすることができ及び/又はプロセッサ内に含めることもできる。例えば、幾つかの実施形態では、この命令処理装置は、図1のプロセッサとすることもできるし、図1のプロセッサ内に含めることもできる。代替的に、この命令処理装置は、同様の又は異なるプロセッサ内に含めることができる。その上、図1のプロセッサは、同様の又は異なる装置内に含めることができる。
装置400は、アーキテクチャレジスタ405を備える。これらのレジスタのそれぞれは、データをストアするように動作可能なオンダイ記憶ロケーションを表すことができる。これらのレジスタは、よく知られた技法を用いて種々のマイクロアーキテクチャに種々の方法で実装することができ、どの特定のタイプの回路にも限定されるものではない。様々な異なるタイプのレジスタが好適である。好適なタイプのレジスタの例には、専用化された物理レジスタ、レジスタリネームを用いて動的にアロケートされる物理レジスタ、及びそれらの組み合わせが含まれるが、これらに限定されるものではない。幾つかの実施形態では、図2のパックドデータレジスタ207又は図3のパックドデータレジスタ307をレジスタ405に用いることができる。代替的に、他のレジスタをレジスタ405に用いることができる。
この装置は、1つ又は複数の相対的に狭いオペランドを示すことができる部分レジスタアクセス命令403を受信することができる。例として、この命令は、命令フェッチユニット、命令キュー等から受信することができる。幾つかの実施形態では、部分レジスタアクセス命令は、第1の相対的に狭いソースオペランド(例えば、レジスタ)422を(例えば、1つ若しくは複数のフィールド又は一組のビットを通じて)明示的に指定するか又は別の方法で示す(例えば、暗黙的に示す)ことができ、相対的に狭いデスティネーションオペランド(例えば、レジスタ)424を指定するか又は別の方法で示すことができる。幾つかの実施形態では、第1の狭いソースオペランド422は、第1の広いソースオペランド423の一部とすることができ、及び/又はより狭いデスティネーションオペランド424は、広いデスティネーションオペランド425の一部とすることができる。一例として、第1の狭いソースオペランド422は、第1の128ビットXMMレジスタとすることができ、第1の広いソースオペランド423は、第1の128ビットXMMレジスタがオーバーレイされる第1の512ビットZMMレジスタとすることができ、狭いデスティネーションオペランド424は、第2の128ビットXMMレジスタとすることができ、広いデスティネーションオペランド425は、第2の128ビットXMMレジスタがオーバーレイされる第2の512ビットZMMレジスタとすることができる。「狭い」及び「広い」という用語は、本明細書において用いられるとき、互いに対して相対的である相対的用語である(すなわち、絶対的用語ではない)(例えば、狭いソースオペランドは、広いソースオペランドよりも狭い等である)。他の実施形態では、部分レジスタアクセス命令は、僅かに単一の相対的に狭いレジスタを示すことができる。その上、他の実施形態では、1つ又は複数のメモリロケーションを用いて、レジスタのうちの1つ又は複数に置き換えることができ、及び/又はデスティネーションレジスタをソースレジスタと同じとすることができる。
装置400は、デコードロジック420も備える。このデコードロジックは、デコードユニット又はデコーダーとも呼ばれる場合がある。部分レジスタアクセス命令は、この装置の命令セットの機械コード命令、アセンブリ言語命令、マクロ命令、又は命令及び/又は制御信号を表すことができる。デコーダーは、部分レジスタアクセス命令をデコード、トランスレート、解釈、モーフィング、又は別の方法で変換することができる。例えば、デコーダーは、相対的に高水準の部分レジスタアクセス命令を、高水準命令を反映し、表し、及び/又は高水準命令から導出された1つ又は複数の対応する相対的に低水準のマイクロ命令、マイクロ演算、マイクロコードエントリーポイント、又は他の相対的に低水準の命令若しくは制御信号にデコードすることができる。デコーダーは、様々な異なるメカニズムを用いて実施することができる。これらのメカニズムには、マイクロコード読み出し専用メモリ(ROM)、ルックアップテーブル、ハードウェア実施態様、プログラマブルロジックアレイ(PLA)、及び当該技術分野で知られているデコーダーを実施するのに用いられる他のメカニズムが含まれるが、これらに限定されるものではない。
幾つかの実施形態では、デコードロジック420は、(第1の狭いソースパックドデータオペランド422及び狭いデスティネーションオペランド424を示す)部分レジスタアクセスパックドデータ命令を、第1の広いソースパックドデータオペランド423及び広いデスティネーションオペランド425を示すマスクされたフルレジスタアクセスパックドデータ命令/演算にマッピングするロジック421を備えることができる。第1の広いソースパックドデータオペランド423は、第1の狭いソースパックドデータオペランド422よりも広く、この第1の狭いソースパックドデータオペランドを含む(例えば、狭いオペランド422を広いオペランド423上にエイリアスすることができる)。広いデスティネーションオペランド425は、狭いデスティネーションオペランド424よりも広く、この狭いデスティネーションオペランドを含む。幾つかの実施形態では、部分レジスタアクセス命令及びマスクされたフルレジスタアクセス命令は、同じ又は密接に類似した算術演算、論理演算、又は他の演算を有することができる(例えば、ともに加算演算を実行することができ、ともにシフト演算を実行することができる等)。幾つかの実施形態では、マスクされたフルレジスタアクセス命令は、部分レジスタアクセス命令に、マスクアウトすることができる追加の演算を加えた全ての演算を実行することができる。「マスクされた」という用語は、以下で更に論述するプレディケーション又は条件付き実行を指す。利点として、幾つかの実施形態では、フルレジスタアクセス命令は、部分レジスタアクセスの代わりにフルレジスタアクセスを実行することができる。
図4を再び参照すると、実行ロジック409は、デコードロジック420及びレジスタ405と結合されている。例として、実行ロジックは、実行ユニット、算術ユニット、算術論理ユニット、算術演算及び論理演算を実行するデジタル回路、機能ユニット、集積回路部又はハードウェアを含むユニット等を含むことができる。実行ユニット及び/又は命令処理装置は、部分レジスタアクセス命令403に応答して(例えば、部分レジスタアクセス命令403からデコードロジックによって導出された1つ又は複数の命令又は制御信号に応答して)演算を実行するように動作可能な具体的な又は特定のロジック(例えば、回路部、又は潜在的にファームウェア及び/又はソフトウェアと組み合わされる他のハードウェア)を含むことができる。
幾つかの実施形態では、実行ユニットは、パックドデータ演算マスク408を用いて、マスクされたフルレジスタアクセスパックドデータ命令/演算を実行するように動作可能とすることができる。幾つかの実施形態では、パックドデータ演算マスクは、マスクされたフルレジスタアクセスパックドデータ命令/演算によってストアされるパックドデータ結果の対応する結果データ要素ごとのマスク要素を備えることができる。幾つかの実施形態では、部分レジスタアクセスパックドデータ命令によってストアされないマスクされたフルレジスタアクセスパックドデータ命令/演算によってストアされる複数の結果データ要素に対応する全てのマスク要素は、マスクアウトするものである。実行ユニットは、広いデスティネーションオペランド425にパックドデータ結果をストアすることができる。
幾つかの実施形態では、部分レジスタアクセス命令がパックドデータ演算マスクを示さない場合があるが、それにもかかわらず、パックドデータ演算マスク408を用いて、部分レジスタアクセス命令の実行を実施することができる。他の実施形態では、部分レジスタアクセス命令がパックドデータ演算マスクを示すことができるが、パックドデータ演算マスク408は、部分レジスタアクセス命令によって示されるパックドデータ演算マスクよりもビットを広くすることができる(例えば、全て意図的にマスクアウトされた追加のマスクビットを有することができる)。
パックドデータ演算マスクは、プレディケートオペランド又は条件付き制御オペランドを表すことができる。パックドデータ演算マスクは、本明細書においては、単にマスクと呼ばれる場合もある。各マスクは、命令に関連付けられた演算をソースデータ要素に対して実行するか否か及び/又は演算の結果をパックドデータ結果にストアするか否かをプレディケート、条件付き制御、又はマスクすることができる。各マスクはそれぞれ、複数のマスク要素、プレディケート要素、又は条件付き制御要素を含むことができる。
幾つかの実施形態では、各マスクは、結果データ要素ごとの粒度で演算をマスクするように動作可能とすることができる。1つの態様では、マスク要素は、結果データ要素と1対1対応で含めることができる(例えば、4つの結果データ要素と4つの対応するマスク要素とが存在することができる)。各異なるマスク要素は、異なる対応するパックドデータ演算、及び/又は異なる対応する結果データ要素のマスクストレージを別々に及び/又は他のものとは独立にマスクするように動作可能とすることができる。例えば、マスク要素は、パックドデータ演算がソースパックドデータの対応するデータ要素(又は2つのソースパックドデータの対応するデータ要素対)に対して実行されるか否か、及び/又はパックドデータ演算の結果が対応する結果データ要素にストアされるか否かをマスクするように動作可能とすることができる。
一般に、各マスク要素は、単一ビットとすることができる。この単一ビットは、2つの異なる可能性のうちのいずれかを指定することを可能にすることができる。一例として、各ビットは、演算を実行すること対演算を実行しないことのいずれかを指定することができる。別の例として、各ビットは、演算の結果をストアすること対演算の結果をストアしないことを指定することができる。1つの可能な規定によれば、各マスクビットは、パックド演算の結果を対応する結果データ要素にストアすることを許可する第1の値(例えば、バイナリー1にセットされる)を有することもできるし、パックド演算の結果を対応する結果データ要素にストアすることを防止する第2の値(例えば、バイナリー0にクリアされる)を有することもできる。反対の規定も可能である。
幾つかの実施形態では、対応するマスクビット又は要素にかかわらず、演算をオプションとして実行することができるが、演算の対応する結果は、対応するマスクビット又は要素の値に応じて、結果パックドデータにストアされる場合もあるし、されない場合もある。代替的に、他の実施形態では、演算は、対応するマスクビット又は要素がマスクアウトされている場合、オプションとして省略することができる(すなわち、実行されない)。幾つかの実施形態では、例外及び/又は違反は、オプションとしてマスクオフされた要素に対する演算について抑制することもできるし、この演算によって起動されないようにすることもできる。幾つかの実施形態では、マスクオフされたデータ要素に対応するメモリフォールトは、オプションとして抑制することもできるし、起動されないようにすることもできる。
説明を分かりにくくしないようにするために、比較的単純な命令処理装置400が図示及び説明されてきた。他の実施形態では、この装置は、オプションとして、プロセッサ内に見られる他のよく知られた構成要素を備えることができる。そのような構成要素の例には、分岐予測ユニット、命令フェッチユニット、命令キャッシュ及びデータキャッシュ、命令変換索引バッファー及びデータ変換索引バッファー、プリフェッチバッファー、マイクロ命令キュー、マイクロ命令シーケンサー、レジスタリネームユニット、命令スケジューリングユニット、バスインターフェースユニット、第2のキャッシュ又は更に高レベルキャッシュ、リタイアメントユニット、プロセッサに含まれる他の構成要素、並びにそれらの様々な組合せが含まれるが、これらに限定されるものではない。プロセッサ内の構成要素の文字どおり多数の異なる組合せ及び構成があり、実施形態は、どの特定の組合せにも構成にも限定されるものではない。実施形態は、複数のコアを有するプロセッサ、論理プロセッサ、又は実行エンジンに含めることができ、これらのうちの少なくとも1つは、本明細書において開示される命令の一実施形態を実行するように動作可能な実行ロジックを有する。
図5は、プロセッサにおける方法530の一実施形態のブロック流れ図である。幾つかの実施形態では、図5の演算及び/又は方法は、図1のプロセッサ及び/又は図4の装置によって及び/又はそれらの内部において実行することができる。図1のプロセッサ及び図4の装置について本明細書において説明した構成要素、特徴、及び具体的なオプションの詳細は、図5の演算及び/又は方法にもオプションとして適用される。代替的に、図5の演算及び/又は方法は、同様の又は完全に異なるプロセッサ又は装置によって及び/又はそれらの内部において実行することができる。その上、図1のプロセッサ及び図4の装置は、図5のものと同様か、又は異なる演算及び/又は方法を実行することができる。
この方法は、ブロック531において、パックドデータ命令を受信することを含む。様々な態様では、第1の命令は、オフダイソース(例えば、システムメモリ、ディスク、又はシステム相互接続部)から受信することもできるし、オンダイソース(例えば、命令キャッシュ又は命令フェッチユニット)から受信することもできる。幾つかの実施形態では、パックドデータ命令は、第1の狭いソースパックドデータオペランド、オプションとして第2の狭いソースパックドデータオペランド、及び狭いデスティネーションオペランドを示すことができる。
この方法は、ブロック532において、パックドデータ命令をマスクされたパックドデータ演算にマッピングすることを含む。幾つかの実施形態では、マスクされたパックドデータ演算は、第1の狭いソースパックドデータオペランドよりも広くこの第1の狭いソースパックドデータオペランドを含む第1の広いソースパックドデータオペランド、オプションとして、第2の狭いソースパックドデータオペランドよりも広くこの第2の狭いソースパックドデータオペランドを含む第2の広いソースパックドデータオペランド、及び狭いデスティネーションオペランドよりも広くこの狭いデスティネーションオペランドを含む広いデスティネーションオペランドを示すことができる。幾つかの実施形態では、マスクされたパックドデータ演算は、受信されたパックドデータ命令がマスクされた命令であるか否か及び/又はパックドデータ演算マスクを示すか否かのパックドデータ演算マスクを示すことができる。幾つかの実施形態では、デコードロジック(例えば、デコードユニット)が、このマッピングを実行することができる。
この方法は、ブロック533において、パックドデータ演算マスクを生成することを含む。幾つかの実施形態では、パックドデータ演算マスクは、マスクされたパックドデータ演算によってストアされるパックドデータ結果の各対応する結果データ要素用のマスク要素を含むことができる。幾つかの実施形態では、パックドデータ命令によってストアされないマスクされたパックドデータ演算によってストアされる結果データ要素に対応する全てのマスク要素はマスクアウトするものとすることができる。
この方法は、ブロック534において、パックドデータ演算マスクを用いて、マスクされたパックドデータ演算を実行することを含む。この方法は、ブロック535において、パックドデータ結果を広いデスティネーションオペランドにストアすることを含む。幾つかの実施形態では、パックドデータ結果を広いデスティネーションオペランドにストアすることは、部分レジスタ書き込みの代わりにフルレジスタ書き込みを実行することを含むことができる。幾つかの実施形態では、広いデスティネーションオペランドは、デスティネーションレジスタを完全に満たすことができるのに対して、狭いデスティネーションオペランドは、マッピングが実行されていなかった場合には部分レジスタ書き込みが必要とされていた可能性があるようにデスティネーションレジスタを部分的にしか満たしていなかったことになる。
図6は、部分レジスタアクセス命令に応答して、広いオペランド上にオーバーレイされる狭いオペランドに対して実行することができる部分レジスタアクセス演算603を示すブロック図である。部分レジスタアクセス命令は、第1の狭いソースパックドデータ622−1を指定するか又は別の方法で示すことができ、第2の狭いソースパックドデータ622−2を指定するか又は別の方法で示すことができ、結果パックドデータをストアすることができる狭いデスティネーションオペランド624(例えば、記憶ロケーション)を指定するか又は別の方法で示すことができる。図示した例では、第1の狭いソースオペランド、第2の狭いソースオペランド、及び狭いデスティネーションオペランドのそれぞれは、128ビット幅であり、4つの32ビットデータ要素を含む。この説明図では、第1の狭いソースパックドデータは、最下位位置(右側)から最上位位置(左側)に値A1、A2、A3、及びA4を有する。同様に、第2の狭いソースパックドデータは、最下位位置(右側)から最上位位置(左側)に値B1、B2、B3、及びB4を有する。他の例は、これよりも狭い(例えば、8ビット、16ビット等)か又は広い(例えば、64ビット)データ要素を有する他のパックドデータ幅(例えば、64ビット、256ビット、512ビット等)を用いることができる。
狭い128ビットオペランドは、広いレジスタにストアされる。この説明図では、広いレジスタは512ビットレジスタである。詳細には、第1の狭いソースパックドデータ622−1は、第1の512ビットレジスタ607−1にストアされ、第2の狭いソースパックドデータ622−2は、第2の512ビットレジスタ607−2にストアされ、狭いデスティネーションオペランド624は、第3の512ビットレジスタ607−3にストアされる。他の実施形態では、例えば、256ビットレジスタ又は1024ビットレジスタ等の他のレジスタ幅を用いることができる。第1の512ビットレジスタのビット511:128は、値A5〜A16をストアする。同様に、第2の512ビットレジスタのビット511:128は、値B5〜B16をストアする。
結果パックドデータは、命令/演算に応答して生成され、狭いデスティネーションオペランド624にストアされる。結果パックドデータは、複数の結果パックドデータ要素を含む。図示した例では、結果パックドデータは、128ビット幅であり、4つの32ビット結果データ要素を含む。結果データ要素のそれぞれは、演算の結果を含み、この場合、第1の狭いソースパックドデータ及び第2の狭いソースパックドデータからの対応するソースデータ要素対に対して対応する相対ビット位置において実行される加算演算又は和の結果を含む。例えば、この説明図では、結果パックドデータは、最下位位置(右側)から最上位位置(左側)に値A1+B1、A2+B2、A3+B3、及びA4+B4を有する。加算演算は1つの説明例にすぎないこと、並びに他の算術(例えば、乗算、減算等)及び/又は論理(例えば、シフト、回転、論理AND、論理XOR等)演算も好適であることが認識されるべきである。
128ビットの第1の狭いソースパックドデータ622−1及び第2の狭いソースパックドデータ622−2は、広い第1の512ビットレジスタ607−1及び第2の512ビットレジスタ607−2の一部にすぎないので、狭いソースオペランドにアクセスすることは、第1の512ビットレジスタ及び第2の512ビットレジスタの部分レジスタ読み出しを伴うことができる。例えば、値A1〜A4は、値A5〜A16を読み出すことなく読み出すことができる。その上、狭い128ビット結果パックドデータ及び/又は狭い128ビットデスティネーションオペランドは、広い第3の512ビットレジスタ607−3の一部にすぎないので、結果をストアすることは、第3の512ビットレジスタへの部分レジスタ書き込みを伴うことができる。例えば、値A1+B1、A2+B2、A3+B3、及びA4+B4は、第3の512ビットレジスタのビット511:128の既存の内容を破壊することなく(例えば、A5〜A16又はB5〜B16の値を破壊することなく)第3の512ビットレジスタにストアすることができる。幾つかの実施形態では、そのような部分レジスタアクセスの数をなくすか又は少なくとも削減することが望ましい場合がある。
図7は、狭いオペランドを示す部分レジスタアクセスパックドデータ命令に応答して実行することができる広いオペランドに対するマスクされたフルレジスタアクセスパックドデータ演算740の一例示の実施形態のブロック図である。幾つかの実施形態では、プロセッサ又はその一部分(例えば、デコードユニット)は、部分レジスタアクセスパックドデータ命令によって実行される1つ又は複数の部分レジスタアクセスをマスクされたフルレジスタアクセスパックドデータ演算によって実行される1つ又は複数の対応するフルレジスタアクセスに置き換えるために、部分レジスタアクセスパックドデータ命令をマスクされたフルレジスタアクセスパックドデータ演算にマッピングすることができる。幾つかの実施形態では、図7のマスクされたフルレジスタアクセスパックドデータ演算は、図6の部分レジスタアクセス命令及び/又は演算を実施するのに用いることができる。
マスクされたフルレジスタアクセスパックドデータ演算は、部分レジスタアクセス命令によって示される第1の狭いソースパックドデータ722−1を有する第1の広いソースパックドデータ723−1と、部分レジスタアクセス命令によって示される第2の狭いソースパックドデータ722−2を有する第2の広いソースパックドデータ723−2とを用いることができる。図示した実施形態では、第1の広いソースパックドデータ及び第2の広いソースパックドデータのそれぞれは、512ビット幅であり、16個の32ビットデータ要素を有し、第1の狭いソースパックドデータ及び第2の狭いソースパックドデータのそれぞれは、128ビット幅であり、4つの32ビットデータ要素を有するが、本発明の範囲はそのように限定されるものではない。
この説明図では、第1の広いソースパックドデータは、最下位位置(右側)から最上位位置(左側)に値A1,A2,A3,A4,A5,A6...A16を有する。この説明図では、第2の広いソースパックドデータは、最下位位置(右側)から最上位位置(左側)に値B1,B2,B3,B4,B5,B6...B16を有する。2つのソースパックドデータ内の同じ相対ビット位置(例えば、図示した同じ垂直位置)におけるソースデータ要素が、対応するデータ要素の対を表す。他の実施形態では、他の任意の適切な広いソースパックドデータ幅及び狭いソースパックドデータ幅を代わりに用いることができる(例えば、32ビット、64ビット、128ビット、又は256ビットの狭い幅を有する128ビット、256ビット、又は1024ビットの広い幅)。その上、他の実施形態では、例えば、幾つか例を挙げると、8ビットバイト、16ビットワード、又は64ビットダブルワード若しくは倍精度浮動小数点等の32ビット以外の他のデータ要素幅をオプションとして用いることができる。
マスクされたフルレジスタアクセスパックドデータ演算は、ソースパックドデータ演算マスク708も用いることができる。この説明図に示すように、一般に、各マスク要素は単一ビットとすることができる。代替的に、3つ以上の異なるオプションから選択することが所望されている場合、各マスク要素に2ビット以上を用いることができる。同様に図示するように、対応するソースデータ要素の対ごと及び/又は結果データ要素ごとに1つのマスク要素、この場合、単一ビットが存在することができる。図示した実施形態では、第1のソースパックドデータ及び第2のソースパックドデータには、対応するデータ要素の16個の対が存在するので、パックドデータ演算マスクは、16個のマスク要素又はビットを含む。これらの16個のマスクビットのそれぞれは、広いデスティネーションオペランド725内のパックドデータ結果の異なる結果データ要素に対応することができる。この説明図では、対応するデータ要素及びそれらの対応するマスクビットは、互いに対して垂直に整列されている。マスクビットのそれぞれは、バイナリー1(すなわち、1)にセットされるか又はバイナリー0(すなわち、0)にクリアされる。バイナリー1(すなわち、1)にセットされたマスクビットは、マスクされていないビットを表すのに対して、バイナリー0(すなわち、0)にクリアされたマスクビットは、マスクされたビットを表す。
512ビットの結果パックドデータは、マスクされたフルレジスタアクセスパックドデータ演算に応答して広いデスティネーションオペランド725にストアされる。幾つかの実施形態では、512ビットの結果パックドデータは、フルレジスタ書き込み又はストアを通じて広いデスティネーションオペランド(例えば、512ビットレジスタ)にストアされる。幾つかの実施形態では、512ビットの結果パックドデータ及び/又は広いデスティネーションオペランド725は、対応する部分レジスタアクセス命令によって示される狭い128ビットデスティネーションオペランド724を含む。この特定の例では、マスクされたフルレジスタアクセスパックドデータ演算は、パックドデータ演算マスク708の対応するマスクビットからのプレディケーションに基づいて、第1の広いソースパックドデータ及び第2の広いソースパックドデータからのデータ要素の対応する対の和を結果パックドデータとして広いデスティネーションオペランド725に条件付きでストアするマスクされたパックドデータ加算演算である。所与のマスクビットがセットされている(すなわち、1である)とき、対応するソースデータ要素の対の和を対応する結果データ要素にストアすることが許可される。逆に、所与のマスクビットがクリアされている(すなわち、0である)とき、対応するソースデータ要素の対の和を対応する結果データ要素にストアすることが許可されない。それどころか、幾つかの実施形態では、その結果データ要素におけるオリジナル/開始値を変更せずに保持又は保存することができる。
幾つかの実施形態では、狭いデスティネーションオペランドではなく広いデスティネーションオペランド内の結果データ要素に対応するマスク要素は、全て意図的にマスクアウトすることができる。幾つかの実施形態では、広いデスティネーションオペランドではなく狭いデスティネーションオペランド内の結果データ要素に対応する全てのマスク要素は、全てのマスクされていないようにすることができる(例えば、部分レジスタアクセス命令自体がこれらの結果データ要素のうちの幾つかをマスクアウトするプレディケーションを用いていない限り)。例えば、狭いデスティネーションオペランド内の結果データ要素と同じ数の最低順序又は最下位のマスクビットをバイナリー1にセットすることができるのに対して、狭いデスティネーションオペランドではなく広いデスティネーションオペランド内の結果データ要素と同じ数の最高順序又は最上位のマスクビットをバイナリー0にクリアすることができる。図示した実施形態を再び参照すると、ソースパックドデータ演算マスクは、最下位位置(右側)から最上位位置(左側)に値1,1,1,1,0,0...0を有する。すなわち、4つの最低順序のマスクビットはセットされているのに対して、12個の最高順序のマスクビットはクリアされている。これらのマスクビットは、実行時に動的に決定することができるのに対して、部分レジスタアクセスは、一般にコンパイル時に静的に固定されている。セットされたマスクビットのそれぞれについて、和を対応する結果データ要素にストアすることができる。例えば、図示するように、最低順序の4つの結果データ要素は、値A1+B1、A2+B2、A3+B3、及びA4+B4をストアする。この実施形態では、オリジナルの部分レジスタアクセス命令/演算(例えば、図6の命令/演算)に関係する512ビットオペランドの低順序の128ビットの部分内の全てのデータ要素は、全てマスクされていない。
逆に、ビット511:128における全ての高順序のデータ要素は、全てマスクアウトされている。なぜならば、それらのデータ要素は、128ビットオペランドのみを用いたオリジナルの部分レジスタアクセス命令/演算に関係していないからである。クリアされているマスクビットのそれぞれについては、和以外の別の値を対応する結果データ要素にストアすることができる。例えば、ソースがデスティネーションとして再利用される幾つかの実施形態では、広いソースパックドデータからのデータ要素の対応する値を所与のマスクアウトされた結果データ要素にストアすることができるマージングマスキングを実行することができる。例えば、この説明図に示すように、第1の広いソースパックドデータのビット511:128からの値A5〜A16は、広いデスティネーションオペランドのビット511:128にストアすることができる。代替的に、別の実施形態では、値B5〜B16を広いデスティネーションオペランドのビット511:128にストアすることができる。他の実施形態では、デスティネーションがソースレジスタと異なるレジスタである場合、デスティネーションのマスクアウトされた結果データ要素内のオリジナルの内容を保持するか又は変更しないままとすることができる。利点として、これらのクリアされた最上位マスクビットを用いて、128ビットオペランドのみを用いたオリジナルの部分レジスタアクセス命令(例えば、図6の命令/演算)に必要とされない広い512ビットレジスタのその部分をマスクアウトすることができる。
これらのマスクビットは、種々の方法で実施することができる。一例として、幾つかの実施形態では、選択演算を実行することができる。この選択演算では、演算の結果が、対応する結果データ要素に書き込まれるように選択されるか、又はデスティネーションにおける対応する結果データ要素のオリジナルの値(すなわち、オリジナル/開始の内容)が、対応する結果データ要素にライトバックされるように選択される場合もある。別の例として、他の実施形態では、条件付き書き込みを実行することができる。この条件付き書き込みでは、マスクビットが、演算の結果が対応する結果データ要素に書き込まれるのか、又は書き込みが実行されず、それによって、結果データ要素がそのオリジナル/開始の内容のままとされるのかを条件付ける。
これは、狭いオペランドを示す部分レジスタアクセスパックドデータ命令を実施するのに用いることができる広いオペランドに対する好適なマスクされたフルレジスタアクセスパックドデータ演算のほんの1つの説明例にすぎないことが認識されるべきである。例えば、減算、乗算、除算、パックド比較等の2つのソースパックドデータに対する他の演算も好適である。更に他の好適な演算は、単一のソースパックドデータオペランドを伴う。例には、パックドシフト、パックド回転、パックド大きさスケーリング(packed magnitude scaling)、パックド逆数平方根等が含まれるが、これらに限定されるものではない。更に他の好適な演算には、3つ以上のソースパックドデータ、異なるサイズのソースパックドデータ、異なる数のデータ要素のソースパックドデータ、水平形式又は非垂直に整列された形式で実行される演算、部分的スカラー演算及び部分的パックド演算、並びに当該技術分野で知られている更に他の演算が含まれる。
他の実施形態では、上記部分レジスタアクセスパックドデータ命令を実施するのに用いられる部分レジスタアクセス命令/演算及び/又は対応するマスクされたフルレジスタアクセスパックドデータ演算は、レジスタ内の中間のビットに対して演算を行うことができる。例えば、中間のビットは、最下位範囲のビット(例えば、1つ又は複数のパックドデータ要素)と最上位範囲のビット(例えば、1つ又は複数のパックドデータ要素)との間の連続した範囲のビット(例えば、1つ又は複数のパックドデータ要素)を表すことができる。
図8は、部分レジスタアクセス命令に応答して、広いオペランド上にオーバーレイされた狭いオペランドに対して実行することができる部分レジスタアクセス演算803を示すブロック図である。この部分レジスタアクセス命令は、第1の狭いソースパックドデータ822−1を指定するか又は別の方法で示すことができ、第2の狭いソースパックドデータ822−2を指定するか又は別の方法で示すことができ、結果パックドデータをストアすることができる狭いデスティネーションオペランド824(例えば、記憶ロケーション)を指定するか又は別の方法で示すことができる。図示した例では、第1の狭いソースオペランド、第2の狭いソースオペランド、及び狭いデスティネーションオペランドのそれぞれは、128ビット幅であり、2つの64ビットデータ要素を含むが、本発明の範囲はそのように限定されるものではない。この説明図では、第1の狭いソースパックドデータは、最下位位置(右側)から最上位位置(左側)に値A1及びA2を有する。同様に、第2の狭いソースパックドデータは、最下位位置(右側)から最上位位置(左側)に値B1及びB2を有する。他の例は、これよりも狭い(例えば、8ビット、16ビット等)データ要素又はこれよりも広い(例えば、64ビット)データ要素のいずれかを有する他のパックドデータ幅(例えば、64ビット、256ビット、512ビット等)を用いることができる。
狭い128ビットオペランドは、広いレジスタにストアされる。この説明図では、これらの広いレジスタは、256ビットレジスタである。詳細には、第1の狭いソースパックドデータ822−1は、第1の256ビットレジスタ807−1にストアされ、第2の狭いソースパックドデータ822−2は、第2の256ビットレジスタ807−2にストアされ、狭いデスティネーションオペランド824は、第3の256ビットレジスタ807−3にストアされる。他の実施形態では、例えば、512ビットレジスタ又は1024ビットレジスタ等の他のレジスタ幅を用いることができる。第1の256ビットレジスタのビット255:128は、値A3及びA4をストアする。同様に、第2の256ビットレジスタのビット255:128は、値B3及びB4をストアする。
結果パックドデータは、命令/演算に応答して生成され、狭いデスティネーションオペランド824にストアされる。図示した例では、結果パックドデータは、128ビット幅であり、2つのデータ要素を含む。ビット63:0における最低順序のデータ要素は、第1のソースパックドデータからの対応するデータ要素の値A1を含む。この場合では、このデータ要素を生成する加算演算は実行されていない。ビット127:64における高順序のデータ要素は、第1のソースパックドデータ及び第2のソースパックドデータからの対応するデータ要素の対の和を表す和A2+B2を含む。128ビットの第1の狭いソースパックドデータ822−1及び第2の狭いソースパックドデータ822−2は、広い第1の256ビットレジスタ807−1及び第2の256ビットレジスタ807−2の一部でしかないので、狭いソースオペランドにアクセスすることは、部分レジスタ読み出しを伴うことができる。その上、狭い128ビット結果パックドデータ及び/又は狭い128ビットデスティネーションオペランドは、広い第3の256ビットレジスタ807−3の一部でしかないので、結果をストアすることは、部分レジスタ書き込みを伴うことができる。例えば、幾つかの実施形態では、第1の256ビットレジスタは、デスティネーションオペランドとして再利用することができ、和A2+B2は、この256ビットレジスタの他の既存の内容を上書きすることなく(例えば、A1、A3、及びA4を上書きすることなく)、このレジスタのビット127:64にストアすることができる。これは、部分レジスタ書き込みを伴うことができる。幾つかの実施形態では、そのような部分レジスタアクセスの数をなくすか又は少なくとも削減することが望ましい場合がある。
図9は、狭いオペランドを示す部分レジスタアクセスパックドデータ命令に応答して実行することができる広いオペランドに対するマスクされたフルレジスタアクセスパックドデータ演算940の一例示の実施形態のブロック図である。幾つかの実施形態では、プロセッサ又はその一部分(例えば、デコードユニット)は、部分レジスタアクセスパックドデータ命令によって実行される1つ又は複数の部分レジスタアクセスをマスクされたフルレジスタアクセスパックドデータ演算によって実行される1つ又は複数の対応するフルレジスタアクセスに置き換えるために、部分レジスタアクセスパックドデータ命令をマスクされたフルレジスタアクセスパックドデータ演算にマッピングすることができる。幾つかの実施形態では、図9のマスクされたフルレジスタアクセスパックドデータ演算は、図8の部分レジスタアクセス命令及び/又は演算を実施するのに用いることができる。
マスクされたフルレジスタアクセスパックドデータ演算は、部分レジスタアクセス命令によって示される第1の狭いソースパックドデータ922−1を有する第1の広いソースパックドデータ923−1と、部分レジスタアクセス命令によって示される第2の狭いソースパックドデータ922−2を有する第2の広いソースパックドデータ923−2とを用いることができる。図示した実施形態では、第1の広いソースパックドデータ及び第2の広いソースパックドデータのそれぞれは、256ビット幅であり、4つの64ビットデータ要素を有し、第1の狭いソースパックドデータ及び第2の狭いソースパックドデータのそれぞれは、128ビット幅であり、2つの64ビットデータ要素を有するが、本発明の範囲はそのように限定されるものではない。この説明図では、第1の広いソースパックドデータは、最下位位置(右側)から最上位位置(左側)に値A1、A2、A3、及びA4を有する。この説明図では、第2の広いソースパックドデータは、最下位位置(右側)から最上位位置(左側)に値B1、B2、B3、及びB4を有する。他の実施形態では、他の任意の適切な広いソースパックドデータ幅及び狭いソースパックドデータ幅を代わりに用いることができる。その上、他の実施形態では、他のデータ要素幅をオプションとして用いることができる。
マスクされたフルレジスタアクセスパックドデータ演算は、ソースパックドデータ演算マスク908も用いることができる。図示した実施形態では、デスティネーションオペランドに4つのデータ要素があるので、4つの対応するマスクビットが存在する。この例では、ソースパックドデータ演算マスクは、最下位位置(右側)から最上位位置(左側)に値0,1,0,0を有する。
256ビットの結果パックドデータは、マスクされたフルレジスタアクセスパックドデータ演算に応答して広いデスティネーションオペランド925にストアされる。幾つかの実施形態では、256ビットの結果パックドデータは、フルレジスタ書き込み又はストアを通じて広いデスティネーションオペランド(例えば、256ビットレジスタ)にストアされる。幾つかの実施形態では、256ビットの結果パックドデータ及び/又は広いデスティネーションオペランド925は、対応する部分レジスタアクセス命令によって示される狭い128ビットデスティネーションオペランド924を含む。図示するように、単一の和のみを256ビットの結果パックドデータにストアすることができる。すなわち、和A2+B2は、デスティネーションオペランド925のビット127:64にストアすることができる。和A2+B2がストアされるデスティネーションオペランド925のビット127:64に対応する単一のマスクビットのみがセットされる。
他の全てのマスクビットはクリアされる。クリアされたマスクビットのそれぞれについて、第1の広いソースパックドデータ923−1からの対応するデータ要素の値はデスティネーションオペランド925にストアされる。詳細には、値A1は、デスティネーションオペランドのビット63:0にストアされ、値A3は、デスティネーションオペランドのビット191:128にストアされ、値A4は、デスティネーションオペランドのビット255:192にストアされる。これらの他のマスクビットは、オリジナルの部分レジスタアクセス命令/演算による単一の和A2+B2に関係していないので、マスクアウトされている。利点として、これらのクリアされた最上位マスクビットを用いて、オリジナルの部分レジスタアクセス命令(例えば、図8の命令/演算)に必要とされない広い256ビットレジスタのその部分をマスクアウトすることができ、部分レジスタアクセスの代わりにフルレジスタアクセスの実行を可能にすることができる。既に述べたように、多くの他の算術演算及び/又は論理演算も好適である。
図6及び図7は、狭いオペランドが広いオペランドの最下位ビットを占有する一実施形態を示している。図8及び図9は、狭いオペランド、又は狭いオペランドの少なくとも対象となる部分が広いオペランドの最下位端と最上位端との間の中間部分を占有する一実施形態を示している。更に他の実施形態では、狭いオペランドは、広いオペランドの最上位部分を占有することができる。更に他の実施形態では、そのような位置の組み合わせをオプションとして用いることができる。
上述した例では、部分レジスタアクセス命令/演算は、データ要素の対応する対(すなわち、第1のソースオペランド及び第2のソースオペランド内の対応する相対ビット位置における対)に対して演算を行っていた。上記説明図では、データ要素のそれらの対応する対は、垂直に整列されていた。他の実施形態では、部分レジスタアクセス命令/演算は、少なくとも幾つかの対応しないデータ要素(すなわち、第1のソースオペランド及び第2のソースオペランド内の対応する相対ビット位置にないデータ要素)に対して演算を行うことができる。そのような対応しないデータ要素は、不整列(unaligned)であると言われる場合がある。幾つかの実施形態では、シフト、シャッフル、置換(permute)、又は他のデータ再配置演算を実行して対応しないデータ要素の整列を助けることができ、その結果、それらのデータ要素は、第1のソースオペランド及び第2のソースオペランドにおいて整列された/対応する相対ビット位置になり、その結果、部分レジスタアクセス命令/演算を実施するのに用いられるマスクされたフルレジスタアクセスパックドデータ演算によって、第1のソースオペランド及び第2のソースオペランドにおける整列された/対応するデータ要素に対して垂直SIMD演算を実行することができる。幾つかの実施形態では、このデータ再配置演算は、第1のオペランド、又は第1のオペランドからの1つ若しくは複数のデータ要素を、第2のオペランド、若しくは第2のオペランドからの1つ若しくは複数のデータ要素、及び/又はデスティネーションオペランド、若しくはデスティネーションオペランドからの1つ若しくは複数のデータ要素と整列するのに用いることができる。幾つかの実施形態では、データ再配置演算は、デコーダーが、部分レジスタアクセスパックドデータ命令をデコードし、データ再配置演算及びマスクされたフルレジスタアクセスパックドデータ演算を通じて部分レジスタアクセスパックドデータ命令を実施することを決定した際に決定することができる。
以下に説明する図10及び図11は、それぞれ、前述した図8及び図9と或る特定の類似点を有する。説明を分かりにくくしないように、以下の論述は、オプションとして同じ又は類似であり得る全ての特徴及び/又は態様を繰り返すとは限らず、図10及び図11の新しい特徴及び/又は態様又は異なる特徴及び/又は態様を強調する傾向がある。しかしながら、図8及び図9について前述したオプションの特徴及び/又は態様並びに変形形態は、別段の規定のない限り又は別段明確に明らかにされていない限り、一般に図10及び図11にも適用可能であることが認識されるべきである。
図10は、部分レジスタアクセス命令に応答して、広いオペランド上にオーバーレイされた狭いオペランドの対応しない及び/又は不整列のデータ要素に対して実行することができる部分レジスタアクセス演算1003を示すブロック図である。この部分レジスタアクセス命令は、第1の狭いソースパックドデータ1022−1、第2の狭いソースパックドデータ1022−2、及び狭いデスティネーションオペランド1024を指定するか又は別の方法で示すことができる。図示した例では、第1の狭いソースオペランド、第2の狭いソースオペランド、及び狭いデスティネーションオペランドのそれぞれは、128ビット幅であり、2つの64ビットデータ要素を含むが、本発明の範囲はそのように限定されるものではない。この説明図では、第1の狭いソースパックドデータは、値A1及びA2を有する。同様に、第2の狭いソースパックドデータは、値B1及びB2を有する。第1の狭いソースパックドデータ1022−1は、第1の広い256ビットレジスタ1007−1にストアされ、第2の狭いソースパックドデータ1022−2は、第2の広い256ビットレジスタ1007−2にストアされ、狭いデスティネーションオペランド1024は、第3の広い256ビットレジスタ1007−3にストアされる。第1の広い256ビットレジスタのビット255:128は、値A3及びA4をストアする。同様に、第2の広い256ビットレジスタのビット255:128は、値B3及びB4をストアする。
命令/演算に応答して、結果パックドデータが生成され、狭いデスティネーションオペランド1024にストアされる。図示した例では、結果パックドデータは、128ビット幅であり、2つのデータ要素を含む。ビット63:0における最低順序のデータ要素は、第1のソースパックドデータからの対応するデータ要素の値A1を含む。この場合では、このデータ要素を生成する加算演算は実行されていない。ビット127:64における高順序のデータ要素は、和A2+B1を含む。これは、第1の狭いソースパックドデータ及び第2の狭いソースパックドデータにおける対応しないデータ要素の和であることに留意されたい。詳細には、第1の狭いソースパックドデータのビット127:64におけるデータ要素A2は、第2の狭いソースパックドデータのビット63:0におけるデータ要素B1に加えられている。データ要素A2及びB1は、第1のソースパックドデータ及び第2のソースパックドデータにおける対応しない又は不整列のビット位置を占有する。
図11は、広いオペランドの対応する及び/又は整列されたデータ要素に対して実行することができ、狭いオペランドの対応しない及び/又は不整列のデータ要素に対する演算を示す部分レジスタアクセスパックドデータ命令に応答して実行することができるマスクされたフルレジスタアクセスパックドデータ演算1140の一例示の実施形態のブロック図である。幾つかの実施形態では、プロセッサ又はその一部分(例えば、デコードユニット)は、部分レジスタアクセスパックドデータ命令によって実行される1つ又は複数の部分レジスタアクセスを、マスクされたフルレジスタアクセスパックドデータ演算によって実行される1つ又は複数の対応するフルレジスタアクセスに置き換えるために、部分レジスタアクセスパックドデータ命令をマスクされたフルレジスタアクセスパックドデータ演算にマッピングすることができる。幾つかの実施形態では、図11の対応する及び/又は整列されたデータ要素を伴うマスクされたフルレジスタアクセスパックドデータ演算は、図10の対応しない及び/又は不整列のデータ要素を伴う部分レジスタアクセス命令及び/又は演算を実施するのに用いることができる。
マスクされたフルレジスタアクセスパックドデータ演算は、部分レジスタアクセス命令によって示される第1の狭いソースパックドデータ1122−1を有する第1の広いソースパックドデータ1123−1と、部分レジスタアクセス命令によって示される第2の狭いソースパックドデータ1122−2を有する第2の広いソースパックドデータ1123−2とを用いることができる。図示した実施形態では、第1の広いソースパックドデータ及び第2の広いソースパックドデータのそれぞれは、256ビット幅であり、4つの64ビットデータ要素を有し、第1の狭いソースパックドデータ及び第2の狭いソースパックドデータのそれぞれは、128ビット幅であり、2つの64ビットデータ要素を有するが、本発明の範囲はそのように限定されるものではない。この説明図では、第1の広いソースパックドデータは、値A1、A2、A3、及びA4を有する。第2の広いソースパックドデータは、値B1、B2、B3、及びB4を有する。他の実施形態では、他の任意の適切な広いソースパックドデータ幅及び狭いソースパックドデータ幅及び/又は他の任意の適切なデータ要素幅をオプションとして代わりに用いることができる。
幾つかの実施形態では、シフト、シャッフル、置換、又は他のデータ再配置演算を実行して、部分レジスタアクセス命令によって演算されることが示される対応しない及び/又は不整列のデータ要素を整列するのを助けることができ、その結果、広いオペランドに対するマスクされたフルレジスタアクセスパックドデータ演算によって、整列された形式でそれらのデータ要素を演算することができる。例えば、図11のマスクされたフルレジスタアクセスパックドデータ演算に先立って、シフト、シャッフル、置換、又は他のデータ再配置演算を実行して、図10の部分レジスタアクセスパックドデータ命令/演算の対応しない及び/又は不整列のデータ要素A2及びB1を整列するのを助けることができる。図示するように、図示した実施形態では、第2の広いソースパックドデータ1123−2は、値B1を有するデータ要素が第2の広いソースパックドデータのビット63:0内ではなく第2の広いソースパックドデータのビット127:64内となるように64ビットだけシフトすることができる。この時、値A2及びB1は、対応するビット位置にある対応するデータ要素になり、及び/又は互いに対して整列されている。利点として、これは、垂直タイプSIMD演算(例えば、パックド加算)を実行することを可能にすることができる。
他の実施形態では、シフトの代わりに、例えば、回転、シャッフル、置換、又は当該技術分野で知られているとともに整列を達成するのに必要とされる特定の再配置に好適な様々な他のデータ再配置演算等の他のデータ再配置演算を実行することができる。
幾つかの部分レジスタアクセス命令/演算(例えば、図6及び図8に示すもの)について、整列演算もデータ再配置演算も必要とされない場合がある。幾つかの実施形態では、プロセッサがそのような整列演算又はデータ再配置演算を用いる場合、その整列演算又はデータ再配置演算は、必要とされないときは無効化することができる。例えば、実際のシフトの代わりに、0ビット分のシフトを実行することができる。別の例として、シャッフル演算又は置換演算は、データ要素をそれらの元の開始位置にシャッフル又は置換することができる。
マスクされたフルレジスタアクセスパックドデータ演算は、ソースパックドデータ演算マスク1108も用いることができる。図示した実施形態では、4つのデータ要素がデスティネーションオペランドにあるので、4つの対応するマスクビットがある。この例では、ソースパックドデータ演算マスクは、最下位位置(右側)から最上位位置(左側)に値0,1,0,0を有する。
256ビットの結果パックドデータは、マスクされたフルレジスタアクセスパックドデータ演算に応答して、広い256ビットデスティネーションオペランド1125にストアされる。幾つかの実施形態では、256ビットの結果パックドデータは、フルレジスタ書き込み又はストアを通じて広いデスティネーションオペランド(例えば、256ビットレジスタ)にストアされる。幾つかの実施形態では、256ビットの結果パックドデータ及び/又は広いデスティネーションオペランド1125は、対応する部分レジスタアクセス命令によって示される狭い128ビットデスティネーションオペランド1124を含む。図示するように、単一の和のみを256ビットの結果パックドデータにストアすることができる。すなわち、和A2+B1をデスティネーションオペランド1125のビット127:64にストアすることができる。和A2+B1がストアされるデスティネーションオペランド1125のビット127:64に対応する単一のマスクビットのみがセットされる。他の全てのマスクビットはクリアされる。クリアされたマスクビットのそれぞれについて、第1の広いソースパックドデータ1123−1からの対応するデータ要素の値が、デスティネーションオペランド1125にストアされる。
詳細には、値A1はデスティネーションオペランドのビット63:0にストアされ、値A3はデスティネーションオペランドのビット191:128にストアされ、値A4はデスティネーションオペランドのビット255:192にストアされる。これらの他のマスクビットは、オリジナルの部分レジスタアクセス命令/演算による単一の和A2+B1に関係していないのでマスクアウトされている。利点として、これらのクリアされた最上位マスクビットは、オリジナルの部分レジスタアクセス命令(例えば、図10の命令/演算)に必要とされない広い256ビットレジスタの部分をマスクアウトするとともに部分レジスタアクセスの代わりにフルレジスタアクセスの実行を可能にするのに用いることができる。既に述べたように、加算以外の他の多くの算術演算及び/又は論理演算が、同様に/代替的に好適である。
図12は、パックドデータ演算マスクビットの数がパックドデータ幅及びパックドデータ要素幅に依存することを示す表1250である。128ビット、256ビット、及び512ビットのパックドデータ幅が示されているが、他の幅も可能である。8ビットバイト、16ビットワード、32ビットダブルワード(dword)又は単精度浮動小数点、及び64ビットクワッドワード(Qword)又は倍精度浮動小数点のパックドデータ要素幅が考慮されているが、他の幅も可能である。図示するように、パックドデータ幅が128ビットであるときにおいて、パックドデータ要素幅が8ビットであるときは16ビットをマスキングに用いることができ、パックドデータ要素幅が16ビットであるときは8ビットをマスキングに用いることができ、パックドデータ要素幅が32ビットであるときは4ビットをマスキングに用いることができ、パックドデータ要素幅が64ビットであるときは2ビットをマスキングに用いることができる。パックドデータ幅が256ビットであるときにおいて、パックドデータ要素幅が8ビットであるときは32ビットをマスキングに用いることができ、パックドデータ要素幅が16ビットであるときは16ビットをマスキングに用いることができ、パックドデータ要素幅が32ビットであるときは8ビットをマスキングに用いることができ、パックドデータ要素幅が64ビットであるときは4ビットをマスキングに用いることができる。パックドデータ幅が512ビットであるときにおいて、パックドデータ要素幅が8ビットであるときは64ビットをマスキングに用いることができ、パックドデータ要素幅が16ビットであるときは32ビットをマスキングに用いることができ、パックドデータ要素幅が32ビットであるときは16ビットをマスキングに用いることができ、パックドデータ要素幅が64ビットであるときは8ビットをマスキングに用いることができる。
図13は、好適な一組のパックドデータ演算マスクレジスタ1308の一例示の実施形態のブロック図である。パックドデータ演算マスクレジスタのそれぞれは、パックドデータ演算マスクをストアするのに用いることができる。図示した実施形態では、この一組は、K〜Kのラベルが付けられた8つのパックドデータ演算マスクレジスタを含む。代替の実施形態は、8つよりも少ない(例えば、2つ、4つ、7つ等)か又は8つよりも多い(例えば、10個、16個、32個等)パックドデータ演算マスクレジスタを含むことができる。図示した実施形態では、パックドデータ演算マスクレジスタのそれぞれは64ビット幅である。代替の実施形態では、パックドデータ演算マスクレジスタの幅は、64ビットよりも広くすることもできるし(例えば、128ビット等)、64ビットよりも狭くすることもできる(例えば、8ビット、16ビット、32ビット等)。パックドデータ演算マスクレジスタは、よく知られた技法を用いて種々の方法で実装することができ、どの既知の特定のタイプの回路にも限定されるものではない。幾つかの実施形態では、パックドデータ演算マスクレジスタは、別個の専用の一組のアーキテクチャレジスタとすることができる。幾つかの実施形態では、命令は、パックドデータ演算マスクレジスタをビットで又はフィールドにおいてエンコード又は指定することができる。例として、プレディケートされた命令は、3ビット(例えば、3ビットフィールド)を用いて、8つのパックドデータ演算マスクレジスタのうちの任意の1つをエンコード又は指定することができる。代替の実施形態では、これよりも少ない又はこれよりも多くのパックドデータ演算マスクレジスタがあるとき、それぞれこれよりも少ない又はこれよりも多くのビットを用いることができる。
図14は、パックドデータ演算マスクレジスタ1408の一例示の実施形態を示すとともに、パックドデータ演算マスクとして及び/又はマスキングに用いられるビット数がパックドデータ幅及びデータ要素幅に依存する場合があることを示す図である。図示したマスクレジスタは64ビット幅であるが、これは必須ではない。パックドデータ幅及びデータ要素幅に応じて、64ビット全て又は64ビットのサブセットのみをマスキング用に用いることができる。一般に、単一の要素ごとのマスクビットが用いられるとき、マスキング用に用いられるマスクビット数は、パックドデータ幅をパックドデータ要素幅によって除算したものに等しい。512ビット幅のパックドデータの幾つかの説明例が示されている。すなわち、パックドデータ幅が512ビットであり、データ要素幅が64ビットであるとき、レジスタの8ビットのみ(例えば最低順序の8ビット)が、マスキングに用いられる。パックドデータ幅が512ビットであり、データ要素幅が32ビットであるとき、16ビットのみがマスキングに用いられる。
パックドデータ幅が512ビットであり、データ要素幅が16ビットであるとき、32ビットのみがマスキングに用いられる。パックドデータ幅が512ビットであり、データ要素幅が8ビットであるとき、64ビット全てがマスキングに用いられる。プレディケートされた命令は、この命令に関連付けられたパックドデータ幅及びデータ要素幅に基づいて、マスキングに必要なビットのサブセット(例えば、ビットの下位順序又は最下位のサブセット)のみにアクセスすることができ及び/又はそのビットのサブセットを利用することができる。図示した実施形態では、レジスタの最低順序のサブセット又は部分がマスキングに用いられるが、これは必須ではない。代替の実施形態では、最高順序のサブセット又は他の或るサブセットをオプションとして用いることができる。その上、図示した実施形態では、512ビットのパックドデータ幅のみが考慮されているが、同じ原理が、例えば、256ビット幅及び128ビット幅等の他のパックドデータ幅に適用される。
例示的なコアアーキテクチャ、プロセッサ、及びコンピューターアーキテクチャ プロセッサコアは、種々の目的で種々のプロセッサにおいて種々の方法で実施することができる。例えば、そのようなコアの実施態様は、1)汎用コンピューティングを対象とした汎用インオーダーコア、2)汎用コンピューティングを対象とした高性能汎用アウトオブオーダーコア、3)主としてグラフィックス及び/又は科学(スループット)コンピューティングを対象とした専用コアを含むことができる。種々のプロセッサの実施態様は、1)汎用コンピューティングを対象とした1つ若しくは複数の汎用インオーダーコア及び/又は汎用コンピューティングを対象とした1つ若しくは複数の汎用アウトオブオーダーコアを備えるCPU、並びに2)主としてグラフィックス及び/又は科学(スループット)を対象とした1つ又は複数の専用コアを備えるコプロセッサを含むことができる。
そのような種々のプロセッサは、1)CPUとは別個のチップ上のコプロセッサ、2)CPUと同じパッケージ内にある別個のダイ上のコプロセッサ、3)CPUと同じダイ上のコプロセッサ(この場合、そのようなコプロセッサは、統合グラフィックスロジック及び/又は科学(スループット)ロジック等の専用ロジック又は専用コアと呼ばれることがある)、並びに4)説明したCPU(アプリケーションコア(複数の場合もある)又はアプリケーションプロセッサ(複数の場合もある)と呼ばれることがある)、上述したコプロセッサ、及び追加の機能と同じダイ上に備えることができるシステムオンチップ、を備えることができる種々のコンピューターシステムアーキテクチャをもたらす。例示的なコアアーキテクチャを次に説明し、その後に例示的なプロセッサ及びコンピューターアーキテクチャを説明する。
例示的なコアアーキテクチャインオーダーコア及びアウトオブオーダーコアのブロック図 図15Aは、本発明の実施形態による例示的なインオーダーパイプライン及び例示的なレジスタリネームアウトオブオーダー発行/実行パイプラインの双方を示すブロック図である。図15Bは、本発明の実施形態によるプロセッサに含まれる、インオーダーアーキテクチャコアの例示的な実施形態及び例示的なレジスタリネームアウトオブオーダー発行/実行アーキテクチャコアの双方を示すブロック図である。図15A及び図15Bにおける実線のボックスは、インオーダーパイプライン及びインオーダーコアを示している一方、破線のボックスのオプションの追加は、レジスタリネームアウトオブオーダー発行/実行パイプライン及びコアを示している。インオーダーの態様はアウトオブオーダーの態様のサブセットであることから、アウトオブオーダーの態様を説明することにする。
図15Aにおいて、プロセッサパイプライン1500は、フェッチステージ1502、長さデコードステージ1504、デコードステージ1506、アロケーションステージ1508、リネームステージ1510、スケジューリング(ディスパッチ又は発行としても知られている)ステージ1512、レジスタ読み出し/メモリ読み出しステージ1514、実行ステージ1516、ライトバック/メモリ書き込みステージ1518、例外ハンドリングステージ1522、及びコミットステージ1524を備える。
図15Bは、実行エンジンユニット1550に結合されたフロントエンドユニット1530を備えるプロセッサコア1590を示し、双方は、メモリユニット1570に結合されている。コア1590は、縮小命令セットコンピューティング(RISC)コア、複合命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コア、又はハイブリッドコアタイプ若しくは代替のコアタイプとすることができる。更に別のオプションとして、コア1590は、例えば、ネットワークコア又は通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィックス処理ユニット(GPGPU)コア、グラフィックスコア等のような専用コアとすることができる。
フロントエンドユニット1530は、命令キャッシュユニット1534に結合された分岐予測ユニット1532を備え、この命令キャッシュユニットは、命令変換索引バッファー(TLB)1536に結合され、この命令変換索引バッファーは、命令フェッチユニット1538に結合され、この命令フェッチユニットは、デコードユニット1540に結合されている。デコードユニット1540(又はデコーダー)は、命令をデコードし、オリジナルの命令からデコードされるか、又はオリジナルの命令を別の方法で反映するか、又はオリジナルの命令から導出される1つ又は複数のマイクロ演算、マイクロコードエントリーポイント、マイクロ命令、他の命令、又は他の制御信号を出力として生成することができる。デコードユニット1540は、様々な異なるメカニズムを用いて実施することができる。好適なメカニズムの例には、ルックアップテーブル、ハードウェア実施態様、プログラマブルロジックアレイ(PLA)、マイクロコード読み出し専用メモリ(ROM)等が含まれるが、これらに限定されるものではない。1つの実施形態では、コア1590は、(例えば、デコードユニット1540内又は別の状況ではフロントエンドユニット1530内において)或る特定のマクロ命令用のマイクロコードをストアするマイクロコードROM又は他の媒体を備える。デコードユニット1540は、実行エンジンユニット1550内のリネーム/アロケーターユニット1552に結合されている。
実行エンジンユニット1550は、リタイアメントユニット1554と一組の1つ又は複数のスケジューラユニット1556とに結合されたリネーム/アロケーターユニット1552を備える。スケジューラユニット(複数の場合もある)1556は、予約ステーション、中央命令ウィンドウ等を含む任意の数の異なるスケジューラを表す。スケジューラユニット(複数の場合もある)1556は、物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)1558に結合されている。
物理レジスタファイル(複数の場合もある)ユニット1558のそれぞれは、1つ又は複数の物理レジスタファイルを表し、これらの物理レジスタファイルの異なるものは、スカラー整数、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス(例えば、実行される次の命令のアドレスである命令ポインター)等の1つ又は複数の異なるデータタイプをストアする。1つの実施形態では、物理レジスタファイル(複数の場合もある)ユニット1558は、ベクトルレジスタユニット、書き込みマスクレジスタユニット、及びスカラーレジスタユニットを含む。これらのレジスタユニットは、アーキテクチャベクトルレジスタ、ベクトルマスクレジスタ、及び汎用レジスタを提供することができる。物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)1558は、(例えば、リオーダーバッファー(複数の場合もある)及びリタイアメントレジスタファイル(複数の場合もある)を用いる;フューチャーファイル(複数の場合もある)、履歴バッファー(複数の場合もある)、及びリタイアメントレジスタファイル(複数の場合もある)を用いる;レジスタマップ及びレジスタのプールを用いる等して)レジスタリネーム及びアウトオブオーダー実行を実施することができる様々な方法を示すリタイアメントユニット1554によって重ね合わされる。
リタイアメントユニット1554及び物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)1558は、実行クラスター(複数の場合もある)1560に結合されている。実行クラスター(複数の場合もある)1560は、一組の1つ又は複数の実行ユニット1562及び一組の1つ又は複数のメモリアクセスユニット1564を備える。実行ユニット1562は、様々なタイプのデータ(例えば、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点)に対して様々な演算(例えば、シフト、加算、減算、乗算)を実行することができる。幾つかの実施形態は、特定の機能又は特定の数組の機能に専用の複数の実行ユニットを備えることができるが、他の実施形態は、全ての機能を全て実行する1つの実行ユニットのみ又は複数の実行ユニットを備えることができる。スケジューラユニット(複数の場合もある)1556、物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)1558、及び実行クラスター(複数の場合もある)1560は、場合によっては複数のものとして示される。
なぜならば、或る特定の実施形態は、或る特定のタイプのデータ/演算用の別々のパイプライン(例えば、それぞれがそれ自体のスケジューラユニット、物理レジスタファイル(複数の場合もある)ユニット、及び/又は実行クラスターを有するスカラー整数パイプライン、スカラー浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、及び/又はメモリアクセスパイプラインであり、別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスターのみがメモリアクセスユニット(複数の場合もある)1564を有する或る特定の実施形態が実施される)を作成するからである。別々のパイプラインが用いられる場合、これらのパイプラインのうちの1つ又は複数はアウトオブオーダー発行/実行とすることができ、残りはインオーダーとすることができることも理解されるべきである。
一組のメモリアクセスユニット1564は、メモリユニット1570に結合され、このメモリユニットは、レベル2(L2)キャッシュユニット1576に結合されたデータキャッシュユニット1574に結合されているデータTLBユニット1572を備える。1つの例示的な実施形態では、メモリアクセスユニット1564は、ロードユニット、アドレスストアユニット、及びデータストアユニットを備えることができ、これらのそれぞれは、メモリユニット1570内のデータTLBユニット1572に結合されている。命令キャッシュユニット1534は、メモリユニット1570内のレベル2(L2)キャッシュユニット1576に更に結合されている。L2キャッシュユニット1576は、1つ又は複数の他のレベルのキャッシュ及び最終的にはメインメモリに結合されている。
例として、例示的なレジスタリネームアウトオブオーダー発行/実行コアアーキテクチャは、次のようにパイプライン1500を実施することができる。すなわち、1)命令フェッチ1538が、フェッチステージ1502及び長さデコードステージ1504を実行する;2)デコードユニット1540が、デコードステージ1506を実行する;3)リネーム/アロケーターユニット1552が、アロケーションステージ1508及びリネームステージ1510を実行する;4)スケジューラユニット(複数の場合もある)1556が、スケジュールステージ1512を実行する;5)物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)1558及びメモリユニット1570が、レジスタ読み出し/メモリ読み出しステージ1514を実行する;実行クラスター1560が、実行ステージ1516を実行する;6)メモリユニット1570及び物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)1558が、ライトバック/メモリ書き込みステージ1518を実行する;7)様々なユニットが、例外ハンドリングステージ1522に関与することができる;並びに8)リタイアメントユニット1554及び物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)1558が、コミットステージ1524を実行する。
コア1590は、本明細書において説明する命令(複数の場合もある)を含む1つ又は複数の命令セット(例えば、x86命令セット(より新しいバージョンとともに追加された幾つかの拡張を有する);カリフォルニア州サニーベールのMIPS Technologies社のMIPS命令セット;カリフォルニア州サニーベールのARM Holdings社のARM命令セット(NEON等のオプションの追加の拡張を有する)をサポートすることができる。1つの実施形態では、コア1590は、パックドデータ命令セットエクステンション(例えば、AVX1、AVX2)をサポートするロジックを備え、それによって、多くのマルチメディアアプリケーションによって用いられる演算をパックドデータを用いて実行することが可能になる。
コアはマルチスレッド化(並列の2つ以上の組の演算又はスレッドを実行する)をサポートすることができ、タイムスライスマルチスレッド化、同時マルチスレッド化(単一の物理コアが、当該物理コアが同時にマルチスレッド化しているスレッドのそれぞれについて論理コアを提供する)、又はそれらの組合せ(例えば、Intel(登録商標)のHyperthreading technology等のタイムスライスフェッチ及びデコード、並びにその後の同時のマルチスレッド化)を含む様々な方法でそれを行うことができることが理解されるべきである。
レジスタリネームは、アウトオブオーダー実行との関連で説明されているが、レジスタリネームは、インオーダーアーキテクチャにおいても用いることができることが理解されるべきである。プロセッサの図示した実施形態は、別々の命令キャッシュユニット1534及びデータキャッシュユニット1574並びに共有L2キャッシュユニット1576を備えるが、代替の実施形態は、例えば、レベル1(L1)内部キャッシュ、又は複数のレベルの内部キャッシュ等の命令及びデータの双方用の単一の内部キャッシュを有することができる。幾つかの実施形態では、システムは、内部キャッシュと、コア及び/又はプロセッサの外部にある外部キャッシュとの組合せを備えることができる。代替的に、キャッシュの全てを、コア及び/又はプロセッサの外部にすることができる。
具体的な例示的インオーダーコアアーキテクチャ 図16A及び図16Bは、より具体的な例示的インオーダーコアアーキテクチャのブロック図を示している。このコアは、チップ内の幾つかの論理ブロック(同じタイプ及び/又は異なるタイプの他のコアを含む)のうちの1つである。これらの論理ブロックは、アプリケーションに応じて、或る固定機能ロジック、メモリI/Oインターフェース、及び他の必要なI/Oロジックと、高帯域幅相互接続ネットワーク(例えば、リングネットワーク)を通じて通信する。
図16Aは、本発明の実施形態による、オンダイ相互接続ネットワーク1602への接続と、レベル2(L2)キャッシュ1604のローカルサブセットとを伴ったシングルプロセッサコアのブロック図である。1つの実施形態では、命令デコーダー1600は、パックドデータ命令セットエクステンションを有するx86命令セットをサポートする。L1キャッシュ1606は、スカラーユニット及びベクトルユニット内へのキャッシュメモリへの低レイテンシーアクセスを可能にする。1つの実施形態(設計を単純化する)では、スカラーユニット1608及びベクトルユニット1610は、別々のレジスタセット(それぞれ、スカラーレジスタ1612及びベクトルレジスタ1614)を用い、それらの間で転送されるデータは、メモリに書き込まれ、次いで、レベル1(L1)キャッシュ1606からリードバックされるが、本発明の代替の実施形態は、異なる手法を用いる(例えば、単一のレジスタセットを用いるか、又はライトバック及びリードバックされることなく2つのレジスタファイル間でデータを転送することを可能にする通信パスを備える)ことができる。
L2キャッシュ1604のローカルサブセットは、プロセッサコアごとに1つの別々のローカルサブセットに分割されたグローバルL2キャッシュの一部である。各プロセッサコアは、L2キャッシュ1604のそれ自身のローカルサブセットへの直接アクセスパスを有する。プロセッサコアによって読み出されたデータは、当該プロセッサコアのL2キャッシュサブセット1604にストアされ、他のプロセッサコアがそれら自身のローカルL2キャッシュサブセットにアクセスすることと並列に高速にアクセスすることができる。プロセッサコアによって書き込まれたデータは、それ自身のL2キャッシュサブセット1604にストアされ、必要な場合に他のサブセットからフラッシュされる。リングネットワークは、共有データのコヒーレンシーを保証する。リングネットワークは、プロセッサコア、L2キャッシュ、及び他の論理ブロック等のエージェントがチップ内で互いに通信することを可能にするために双方向である。各リングデータパスは、方向あたり1012ビット幅である。
図16Bは、本発明の実施形態による、図16Aにおけるプロセッサコアの一部の拡大図である。図16Bは、L1キャッシュ1604のL1データキャッシュ1606A部分、並びにベクトルユニット1610及びベクトルレジスタ1614に関するより詳細な内容を含む。具体的には、ベクトルユニット1610は、整数命令、単精度浮動小数点命令、倍精度浮動小数点命令のうちの1つ又は複数を実行する16幅ベクトル処理ユニット(VPU)(16幅ALU1628を参照)である。VPUは、スウィズルユニット1620を用いたレジスタ入力のスウィズルと、数値変換ユニット1622A及び1622Bを用いた数値変換と、メモリ入力に関する複製ユニット1624を用いた複製とをサポートする。書き込みマスクレジスタ1626は、結果のベクトル書き込みを断定することを可能にする。
統合メモリコントローラー及び統合グラフィックスを有するプロセッサ 図17は、本発明の実施形態による、2つ以上のコアを有することができ、統合メモリコントローラーを有することができ、統合グラフィックスを有することができるプロセッサ1700のブロック図である。図17における実線のボックスは、単一のコア1702Aと、システムエージェント1710と、一組の1つ又は複数のバスコントローラーユニット1716とを有するプロセッサ1700を示している一方、破線のボックスのオプションの追加は、複数のコア1702A〜1702Nと、システムエージェントユニット1710内の一組の1つ又は複数の統合メモリコントローラーユニット1714と、専用ロジック1708とを有する代替のプロセッサ1700を示している。
したがって、プロセッサ1700の種々の実施態様は、1)統合グラフィックス及び/又は科学(スループット)ロジック(1つ又は複数のコアを備えることができる)である専用ロジック1708と、1つ又は複数の汎用コア(例えば、汎用インオーダーコア、汎用アウトオブオーダーコア、これらの2つの組合せ)であるコア1702A〜1702Nとを有するCPUと、2)主としてグラフィックス及び/又は科学(スループット)向けの多数の専用コアであるコア1702A〜1702Nを有するコプロセッサと、3)多数の汎用インオーダーコアであるコア1702A〜1702Nを有するコプロセッサとを備えることができる。したがって、プロセッサ1700は、汎用プロセッサ、例えば、ネットワークプロセッサ若しくは通信プロセッサ等のコプロセッサ又は専用プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU(汎用グラフィックス処理ユニット)、高スループットメニーインテグレーテッドコア(MIC)コプロセッサ(30個以上のコアを備える)、組み込みプロセッサ等とすることができる。このプロセッサは、1つ又は複数のチップ上に実装することができる。プロセッサ1700は、例えば、BiCMOS、CMOS、又はNMOS等の複数のプロセス技術のうちの任意のものを用いた1つ若しくは複数の基板の一部とすることができ、及び/又は1つ若しくは複数の基板上に実装することができる。
メモリ階層は、コア内の1つ又は複数のレベルのキャッシュと、一組の1つ又は複数の共有キャッシュユニット1706と、一組の統合メモリコントローラーユニット1714に結合された外部メモリ(図示せず)とを含む。一組の共有キャッシュユニット1706は、レベル2(L2)、レベル3(L3)、レベル4(L4)、若しくは他のレベルのキャッシュ等の1つ又は複数の中間レベルキャッシュ、最終レベルキャッシュ(LLC)、及び/又はそれらの組合せを含むことができる。1つの実施形態では、リングベースの相互接続部ユニット1712が、統合グラフィックスロジック1708、一組の共有キャッシュユニット1706、及びシステムエージェントユニット1710/統合メモリコントローラーユニット(複数の場合もある)1714を相互接続するが、代替の実施形態は、そのようなユニットを相互接続するための任意の数のよく知られた技法を用いることができる。1つの実施形態では、1つ又は複数のキャッシュユニット1706とコア1702A〜1702Nとの間にコヒーレンシーが維持される。
幾つかの実施形態では、コア1702A〜1702Nのうちの1つ又は複数は、マルチスレッド化することができる。システムエージェント1710は、コア1702A〜1702Nを連係及び動作させる構成要素を備える。システムエージェントユニット1710は、例えば、電力制御ユニット(PCU)及びディスプレイユニットを備えることができる。PCUは、コア1702A〜1702N及び統合グラフィックスロジック1708の電力状態を調整するのに必要なロジック及び構成要素とすることができるか又はそれらを備えることができる。ディスプレイユニットは、1つ又は複数の外部に接続されたディスプレイを駆動するためのものである。
コア1702A〜1702Nは、アーキテクチャ命令セットの観点で同種のものとすることもできるし、異種のものとすることもできる。すなわち、コア1702A〜1702Nのうちの2つ以上は、同じ命令セットを実行可能とすることができる一方、他のものは、その命令セットのサブセットのみ又は異なる命令セットを実行可能とすることができる。
例示的なコンピューターアーキテクチャ 図18〜図21は、例示的なコンピューターアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末、エンジニアリングワークステーション、サーバー、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラー、携帯電話、ポータブルメディアプレイヤー、ハンドヘルドデバイス、及び他の様々な電子デバイスについて当該技術分野において知られている他のシステム設計及び構成も適している。概して、本明細書において開示されるようなプロセッサ及び/又は他の実行ロジックを組み込むことができる非常に多くの様々なシステム又は電子デバイスが一般に適している。
次に図18を参照すると、本発明の1つの実施形態によるシステム1800のブロック図が示されている。システム1800は、コントローラーハブ1820に結合された1つ又は複数のプロセッサ1810、1815を備えることができる。1つの実施形態では、コントローラーハブ1820は、グラフィックスメモリコントローラーハブ(GMCH)1890及び入力/出力ハブ(IOH)1850(別々のチップ上に存在することができる)を含む。GMCH1890は、メモリと、メモリ1840及びコプロセッサ1845が結合されたグラフィックスコントローラーとを備える。IOH1850は、入力/出力(I/O)デバイス1860をGMCH1890に結合する。代替的に、メモリ及びグラフィックスコントローラーの一方又は双方は、(本明細書において説明するように)プロセッサ内に統合され、メモリ1840及びコプロセッサ1845は、プロセッサ1810と、IOH1850を有する単一のチップ内のコントローラーハブ1820とに直接結合されている。
追加のプロセッサ1815のオプションの特性が、図18に破線で示されている。各プロセッサ1810、1815は、本明細書において説明する処理コアのうちの1つ又は複数を備えることができ、プロセッサ1700の或るバージョンとすることができる。
メモリ1840は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、又はこれらの2つの組合せとすることができる。少なくとも1つの実施形態について、コントローラーハブ1820は、フロントサイドバス(FSB)等のマルチドロップバス、QuickPath Interconnect(QPI)等のポイントツーポイントインターフェース、又は同様の接続1895を介してプロセッサ(複数の場合もある)1810、1815と通信する。
1つの実施形態では、コプロセッサ1845は、例えば、高スループットMICプロセッサ、ネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、組み込みプロセッサ等のような専用プロセッサである。1つの実施形態では、コントローラーハブ1820は、統合グラフィックスアクセラレーターを備えることができる。
アーキテクチャの特性、マイクロアーキテクチャの特性、熱特性、電力消費特性等を含む多様なメリットメトリック(metrics of merit)の観点から、物理リソース1810、1815間には様々な相違が存在する可能性がある。
1つの実施形態では、プロセッサ1810は、一般のタイプのデータ処理演算を制御する命令を実行する。命令内には、コプロセッサ命令を組み込むことができる。プロセッサ1810は、これらのコプロセッサ命令を、アタッチされたコプロセッサ1845によって実行されるべきタイプであるとして認識する。したがって、プロセッサ1810は、これらのコプロセッサ命令(又はコプロセッサ命令を表す制御信号)を、コプロセッサ1845に向けてコプロセッサバス又は他の相互接続上に発行する。コプロセッサ(複数の場合もある)1845は、受信したコプロセッサ命令を受理して実行する。
次に図19を参照すると、本発明の一実施形態による第1のより具体的な例示的システム1900のブロック図が示されている。図19に示すように、マルチプロセッサシステム1900は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続1950を介して結合された第1のプロセッサ1970及び第2のプロセッサ1980を備える。プロセッサ1970及び1980のそれぞれは、プロセッサ1700の或るバージョンとすることができる。本発明の1つの実施形態では、プロセッサ1970及び1980は、それぞれプロセッサ1810及び1815である一方、コプロセッサ1938は、コプロセッサ1845である。別の実施形態では、プロセッサ1970及び1980は、それぞれプロセッサ1810及びコプロセッサ1845である。
プロセッサ1970及び1980は、それぞれ統合メモリコントローラー(IMC)ユニット1972及び1982を備えるものとして示されている。プロセッサ1970は、そのバスコントローラーユニットの一部としてポイントツーポイント(P−P)インターフェース1976及び1978も備える。同様に、第2のプロセッサ1980も、P−Pインターフェース1986及び1988を備える。プロセッサ1970、1980は、ポイントツーポイント(P−P)インターフェース回路1978、1988を用いてP−Pインターフェース1950を介して情報を交換することができる。図19に示すように、IMC1972及び1982は、プロセッサをそれぞれのメモリ、すなわちメモリ1932及びメモリ1934に結合している。これらのメモリは、それぞれのプロセッサにローカルにアタッチされたメインメモリの一部分とすることができる。
プロセッサ1970、1980はそれぞれ、ポイントツーポイントインターフェース回路1976、1994、1986、1998を用いて個々のP−Pインターフェース1952、1954を介してチップセット1990と情報を交換することができる。チップセット1990は、オプションとして、高性能インターフェース1939を介してコプロセッサ1938と情報を交換することができる。1つの実施形態では、コプロセッサ1938は、例えば、高スループットMICプロセッサ、ネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、組み込みプロセッサ等のような専用プロセッサである。
共有キャッシュ(図示せず)を、いずれかのプロセッサ内に備えることもできるし、双方のプロセッサの外部に備えて、さらに、P−P相互接続を介してプロセッサと接続することもでき、その結果、プロセッサが低電力モードになった場合に、いずれかのプロセッサ又は双方のプロセッサのローカルキャッシュ情報を共有キャッシュにストアすることができる。
チップセット1990は、インターフェース1996を介して第1のバス1916に結合することができる。1つの実施形態では、第1のバス1916は、周辺機器相互接続(PCI)バス、又はPCIエクスプレスバス若しくは別の第3世代I/O相互接続バス等のバスとすることができるが、本発明の範囲は、そのように限定されるものではない。
図19に示すように、様々なI/Oデバイス1914を、第1のバス1916を第2のバス1920に結合するバスブリッジ1918とともに第1のバス1916に結合することができる。1つの実施形態では、コプロセッサ、高スループットMICプロセッサ、GPGPU、アクセラレーター(例えば、グラフィックスアクセラレーター又はデジタル信号処理(DSP)ユニット等)、フィールドプログラマブルゲートアレイ、又は他の任意のプロセッサ等の1つ又は複数の追加のプロセッサ(複数の場合もある)1915が第1のバス1916に結合されている。1つの実施形態では、第2のバス1920は、ローピンカウント(LPC)バスとすることができる。様々なデバイスを第2のバス1920に結合することができる。これらの様々なデバイスには、例えば、キーボード及び/又はマウス1922、通信デバイス1927、並びに1つの実施形態では命令/コード及びデータ1930を含むことができるディスクドライブ若しくは他のマスストレージデバイス等の記憶ユニット1928が含まれる。さらに、オーディオI/O1924を第2のバス1920に結合することができる。他のアーキテクチャが可能であることに留意されたい。例えば、図19のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバスアーキテクチャ又は他のそのようなアーキテクチャを実装することができる。
次に図20を参照すると、本発明の一実施形態による第2のより具体的な例示的なシステム2000のブロック図が示されている。図19及び図20における同様の要素は、同様の参照符号を有し、図19の或る特定の態様は、図20の他の態様を分かりにくくしないように図20から省略されている。
図20は、プロセッサ1970、1980が、それぞれ、統合されたメモリ及びI/Oの制御ロジック(「CL」)1972及び1982を備えることができることを示している。したがって、CL1972、1982は、統合メモリコントローラーユニットを備え、I/O制御ロジックを備える。図20は、メモリ1932、1934がCL1972、1982に結合されていることだけでなく、I/Oデバイス2014も制御ロジック1972、1982に結合されていることを示している。レガシーI/Oデバイス2015がチップセット1990に結合されている。
次に図21を参照すると、本発明の一実施形態によるSoC2100のブロック図が示されている。図17における同様の要素は、同様の参照符号を有する。また、破線のボックスは、より高度なSoC上のオプションの特徴である。図21において、相互接続ユニット(複数の場合もある)2102は、一組の1つ又は複数のコア202A〜202N及び共有キャッシュユニット(複数の場合もある)1706を備えるアプリケーションプロセッサ2110と、システムエージェントユニット1710と、バスコントローラーユニット(複数の場合もある)1716と、統合メモリコントローラーユニット(複数の場合もある)1714と、統合グラフィックスロジック、画像プロセッサ、オーディオプロセッサ、及びビデオプロセッサを含むことができる一組の1つ又は複数のコプロセッサ2120と、スタティックランダムアクセスメモリ(SRAM)ユニット2130と、ダイレクトメモリアクセス(DMA)ユニット2132と、1つ又は複数の外部ディスプレイに結合するためのディスプレイユニット2140とに結合されている。1つの実施形態では、コプロセッサ(複数の場合もある)2120は、例えば、ネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、GPGPU、高スループットMICプロセッサ、組み込みプロセッサ等のような専用プロセッサを含む。
本明細書において開示されるメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、又はそのような実施手法の組合せで実施することができる。本発明の実施形態は、少なくとも1つのプロセッサと、記憶システム(揮発性及び不揮発性メモリ及び/又は記憶素子を含む)と、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを備えるプログラマブルシステム上で実行されるコンピュータープログラム又はプログラムコードとして実施することができる。
図19に図示したコード1930等のプログラムコードは、入力された命令に適用されて、本明細書において説明した機能を実行し、出力情報を生成することができる。この出力情報は、既知の方法で1つ又は複数の出力デバイスに適用することができる。この適用のために、処理システムは、例えば、デジタル信号プロセッサ(DSP)、マイクロコントローラー、特定用途向け集積回路(ASIC)、又はマイクロプロセッサ等のプロセッサを有する任意のシステムを含む。
プログラムコードは、処理システムと通信する高水準手続型プログラム言語又はオブジェクト指向型プログラム言語で実施することができる。プログラムコードは、所望の場合には、アセンブリ言語又は機械語で実施することもできる。実際に、本明細書において説明したメカニズムは、どの特定のプログラム言語にも範囲が限定されるものではない。いずれにしても、この言語は、コンパイル型言語又は解釈型言語とすることができる。
少なくとも1つの実施形態の1つ又は複数の態様は、機械によって読み出されると、当該機械に、本明細書において説明した技法を実行するロジックを作製させるプロセッサ内の様々なロジックを表す機械可読媒体上にストアされた代表的な命令によって実施することができる。「IPコア」として知られているそのような表現は、有形の機械可読媒体上にストアすることができ、様々な顧客又は製造設備に供給して、ロジック又はプロセッサを実際に作製する製造機械にロードすることができる。
そのような機械可読記憶媒体は、機械又はデバイスによって製造又は形成された物品の非一時的な有形の構成を含むことができるが、これに限定されるものではない。これらの物品は、ハードディスク、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク読み出し専用メモリ(CD−ROM)、再書込み可能コンパクトディスク(CD−RW)、及び光磁気ディスクを含む他の任意のタイプのディスク、読み出し専用メモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)等のランダムアクセスメモリ(RAM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、相変化メモリ(PCM)、磁気カード若しくは光カード、又は電子命令をストアするのに好適な他の任意のタイプの媒体等の半導体デバイス等の記憶媒体を含む。
したがって、本発明の実施形態は、命令を含む非一時的な有形の機械可読媒体、又は本明細書において説明した構造、回路、装置、プロセッサ及び/又はシステムの特徴を定義するハードウェア記述言語(HDL)等の設計データを含む。そのような実施形態は、プログラム製品と呼ばれる場合もある。
エミュレーション(バイナリー変換、コードモーフィング等を含む) 場合によっては、命令変換器を用いて、命令をソース命令セットからターゲット命令セットに変換することができる。例えば、命令変換器は、命令を、コアによって処理される1つ又は複数の他の命令に変換(例えば、静的バイナリー変換、動的コンパイルを含む動的バイナリー変換を用いる)、モーフィング、エミュレート、又は別の方法で変換することができる。命令変換器は、ソフトウェア、ハードウェア、ファームウェア、又はそれらの組合せで実施することができる。命令変換器は、オンプロセッサ、オフプロセッサ、又は一部分がオンプロセッサ及び一部分がオフプロセッサとすることができる。
図22は、本発明の実施形態による、ソフトウェア命令変換器を用いて、ソース命令セット内のバイナリー命令をターゲット命令セット内のバイナリー命令に変換することを対比したブロック図である。図示した実施形態では、命令変換器は、ソフトウェア命令変換器であるが、代替的に、命令変換器は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの様々な組合せで実施することができる。図22は、高水準言語2202によるプログラムを、x86コンパイラー2204を用いてコンパイルしてx86バイナリーコード2206を生成することができることを示している。
このx86バイナリーコードは、少なくとも1つのx86命令セットコア2216を有するプロセッサが本来的に実行することができるものである。少なくとも1つのx86命令セットコア2216を有するプロセッサは、少なくとも1つのx86命令セットコアを有するIntelプロセッサと実質的に同じ結果を達成するために、(1)Intel x86命令セットコアの命令セットの実質的部分、又は(2)少なくとも1つのx86命令セットコアを有するIntelプロセッサ上で実行されることを目的としたアプリケーション又は他のソフトウェアのオブジェクトコードバージョン、を矛盾なく実行又は別の方法で処理することによって、少なくとも1つのx86命令セットコアを有するIntelプロセッサと実質的に同じ機能を実行することができる任意のプロセッサを表している。
x86コンパイラー2204は、追加のリンク処理の有無を問わず、少なくとも1つのx86命令セットコア2216を有するプロセッサ上で実行することができるx86バイナリーコード2206(例えば、オブジェクトコード)を生成するように動作可能なコンパイラーを表している。同様に、図22は、高水準言語2202によるプログラムを、代替の命令セットコンパイラー2208を用いてコンパイルして代替の命令セットバイナリーコード2210を生成することができることを示している。
この代替の命令セットバイナリーコードは、少なくとも1つのx86命令セットコア2214を有しないプロセッサ(例えば、カリフォルニア州サニーベールのMIPS Technologies社のMIPS命令セットを実行するコアを有するプロセッサ及び/又はカリフォルニア州サニーベールのARM Holdings社のARM命令セットを実行するコアを有するプロセッサ)が本来的に実行することができるものである。命令変換器2212は、x86バイナリーコード2206を、x86命令セットコア2214を有しないプロセッサが本来的に実行することができるコードに変換するのに用いられる。この変換されたコードは、代替の命令セットバイナリーコード2210と同じである可能性は低い。なぜならば、これを行うことができる命令変換器は、作製が困難であるからである。しかしながら、変換されたコードは、一般的な演算を達成し、代替の命令セットからの命令で構成される。したがって、命令変換器2212は、エミュレーション、シミュレーション、又は他の任意のプロセスを通じて、x86命令セットプロセッサもコアも有しないプロセッサ又は他の電子デバイスがx86バイナリーコード2206を実行することを可能にするソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せを表している。
図2、図3A、図3B、及び図6〜図14のうちの任意のものについて説明した構成要素、特徴、及び詳細は、オプションとして、図4及び図5のうちの任意のものにおいても用いることができる。その上、装置のうちの任意のものについて本明細書において説明した構成要素、特徴、及び詳細は、オプションとして、実施形態においてそのような装置によって及び/又はそのような装置を用いて実行することができる本明細書において説明した方法のうちの任意のものにおいても用いることができる。
例示の実施形態 以下の例は、更なる実施形態に関係している。それらの例における細部は、1つ又は複数の実施形態における任意の箇所に用いることができる。
例1は、少なくとも第1の狭いソースパックドデータオペランド及び狭いデスティネーションオペランドを示すパックドデータ命令をマスクされたパックドデータ演算にマッピングするデコードユニットを備えるプロセッサである。このマスクされたパックドデータ演算は、第1の狭いソースパックドデータオペランドよりも広く当該第1の狭いソースパックドデータオペランドを含む少なくとも第1の広いソースパックドデータオペランドを示すとともに、狭いデスティネーションオペランドよりも広く当該狭いデスティネーションオペランドを含む広いデスティネーションオペランドを示す。このプロセッサは、デコードユニットと結合された実行ユニットも備える。この実行ユニットは、パックドデータ演算マスクを用いて、マスクされたパックドデータ演算を実行する。このパックドデータ演算マスクは、マスクされたパックドデータ演算によってストアされるパックドデータ結果の対応する結果データ要素ごとのマスク要素を含む。上記パックドデータ命令によってストアされないマスクされたパックドデータ演算によってストアされる結果データ要素に対応する全てのマスク要素は、マスクアウトするものである。この実行ユニットは、パックドデータ結果を広いデスティネーションオペランドにストアする。
例2は、いずれかの先行例のプロセッサを含み、オプションとして、実行ユニットは、広いデスティネーションオペランドに対応するレジスタの幅全体を書き込み、オプションとして、狭いデスティネーションオペランドは、レジスタの幅の一部分のみに対応する。
例3は、いずれかの先行例のプロセッサを含み、オプションとして、実行ユニットは、パックドデータ命令に関連付けられた演算によって更新される結果データ要素がレジスタの最下位部分と当該レジスタの最上位部分との間の当該レジスタの中間部分のみを占有するパックドデータ結果をストアする。
例4は、いずれかの先行例のプロセッサを含み、オプションとして、デコードユニットは、第2の狭いソースパックドデータオペランドも示すパックドデータ命令を受信し、オプションとして、デコードユニットは、パックドデータ命令を、第2の狭いソースパックドデータオペランドよりも広く当該第2の狭いソースパックドデータオペランドを含む第2の広いソースパックドデータオペランドも示すマスクされたパックドデータ演算にマッピングする。
例5は、いずれかの先行例のプロセッサを含み、オプションとして、デコードユニットは、第1の狭いソースパックドデータオペランド及び第2の狭いソースパックドデータオペランドにおける対応するビット位置にない対応しないデータ要素の少なくとも1つの対に対する演算を示すパックドデータ命令を受信し、オプションとして、プロセッサは、マスクされたパックドデータ演算を実行するときに、対応しないデータ要素の対を、実行ユニットによって演算される対応するビット位置に配置する演算を更に実行する。
例6は、いずれかの先行例のプロセッサを含み、オプションとして、プロセッサは、シフト演算、シャッフル演算、及び置換演算のうちの1つを実行することによって、対応しないデータ要素の対を対応するビット位置に配置する演算を実行する。
例7は、いずれかの先行例のプロセッサを含み、オプションとして、パックドデータ命令は、パックドデータ演算マスクを示さない。
例8は、いずれかの先行例のプロセッサを含み、オプションとして、パックドデータ命令は、マスクされたパックドデータ演算を実行するために実行ユニットによって用いられるパックドデータ演算マスクよりも少ないマスク要素を有するパックドデータ演算マスクを示す。
例9は、いずれかの先行例のプロセッサを含み、オプションとして、実行ユニットは、マスクアウトされたマスク要素に対応する各結果データ要素の値が変更されないパックドデータ結果をストアし、オプションとして、マスクされていないマスク要素に対応する各結果データ要素の値がパックドデータ命令に関連付けられた演算によって更新される。
例10は、少なくとも第1の狭いソースパックドデータオペランド及び狭いデスティネーションオペランドを示すパックドデータ命令を受信することを含む、プロセッサにおける方法である。この方法は、パックドデータ命令を、第1の狭いソースパックドデータオペランドよりも広く当該第1の狭いソースパックドデータオペランドを含む少なくとも第1の広いソースパックドデータオペランドを示すとともに、狭いデスティネーションオペランドよりも広く当該狭いデスティネーションオペランドを含む広いデスティネーションオペランドを示すマスクされたパックドデータ演算にマッピングすることも含む。この方法は、マスクされたパックドデータ演算によってストアされるパックドデータ結果の対応する結果データ要素ごとのマスク要素を含むパックドデータ演算マスクを生成することも含む。パックドデータ命令によってストアされないマスクされたパックドデータ演算によってストアされる結果データ要素に対応する全てのマスク要素は、マスクアウトするものである。この方法は、パックドデータ演算マスクを用いてマスクされたパックドデータ演算を実行することも含む。この方法は、パックドデータ結果を広いデスティネーションオペランドにストアすることも含む。
例11は、いずれかの先行例の方法を含み、オプションとして、上記パックドデータ結果をストアすることは、広いデスティネーションオペランドに対応するレジスタの幅全体を書き込むことを含み、オプションとして、狭いデスティネーションオペランドは、レジスタの幅の一部分のみに対応する。
例12は、いずれかの先行例の方法を含み、オプションとして、上記ストアすることは、パックドデータ命令に関連付けられた演算によって更新される結果データ要素がレジスタの最下位部分と当該レジスタの最上位部分との間の当該レジスタの中間部分のみを占有するパックドデータ結果をストアすることを含む。
例13は、いずれかの先行例の方法を含み、オプションとして、上記受信することは、第2の狭いソースパックドデータオペランドも示すパックドデータ命令を受信することを含み、オプションとして、上記マッピングすることは、パックドデータ命令を、第2の狭いソースパックドデータオペランドよりも広く当該第2の狭いソースパックドデータオペランドを含む第2の広いソースパックドデータオペランドも示すマスクされたパックドデータ演算にマッピングすることを含む。
例14は、いずれかの先行例の方法を含み、オプションとして、上記受信することは、第1の狭いソースパックドデータオペランド及び第2の狭いソースパックドデータオペランドにおける対応するビット位置にない対応しないデータ要素の少なくとも1つの対に対する演算を示すパックドデータ命令を受信することを含み、オプションとして、この例は、対応しないデータ要素の対を、マスクされたパックドデータ演算によって演算される対応するビット位置に配置する演算を実行することを更に含む。
例15は、いずれかの先行例の方法を含み、オプションとして、上記対応しないデータ要素の対を対応するビット位置に配置する演算を実行することは、シフト演算、シャッフル演算、及び置換演算のうちの1つを実行することを含む。
例16は、いずれかの先行例の方法を含み、オプションとして、上記受信することは、パックドデータ演算マスクを示さないパックドデータ命令を受信することを含む。
例17は、いずれかの先行例の方法を含み、オプションとして、上記受信することは、生成されるパックドデータ演算マスクよりも少ない数のマスク要素を有する第2のパックドデータ演算マスクを示すパックドデータ命令を受信することを含む。
例18は、いずれかの先行例の方法を含み、オプションとして、第1の狭いソースパックドデータオペランドは、レジスタにおいて第1の広いソースパックドデータオペランド上にエイリアスされる。
例19は、いずれかの先行例の方法を含み、オプションとして、上記ストアすることは、マスクアウトされたマスク要素に対応する各結果データ要素の値が変更されないとともに、オプションとして、マスクされていないマスク要素に対応する各結果データ要素の値がパックドデータ命令に関連付けられた演算によって更新される、パックドデータ結果をストアすることを含む。
例20は、相互接続部と、この相互接続部と結合されたプロセッサとを備える、命令を処理するシステムである。このプロセッサは、少なくとも第1の狭いソースパックドデータオペランド及び狭いデスティネーションオペランドを示すパックドデータ命令を、第1の狭いソースパックドデータオペランドを含む少なくとも第1の広いソースパックドデータオペランドを示すとともに、狭いデスティネーションオペランドを含む広いデスティネーションオペランドを示すマスクされたパックドデータ演算にマッピングする第1のユニットを備える。上記プロセッサは、第1のユニットと結合された集積回路部も備える。この集積回路部は、マスクされたパックドデータ演算によってストアされるパックドデータ結果の対応する結果データ要素ごとのマスクビットを含むマスクを用いて、マスクされたパックドデータ演算を実行する。パックドデータ命令によってストアされるデータ要素に対応するマスクビットのみをマスクアウトしないことが可能である。このシステムは、相互接続部と結合されたダイナミックランダムアクセスメモリ(DRAM)も備える。
例21は、例20のシステムを含み、オプションとして、上記集積回路部は、第1の狭いソースパックドデータオペランドのデータ要素をパックドデータ結果のデータ要素と整列させるデータ再配置演算を更に実行する。
例22は、少なくとも第1の狭いソースパックドデータオペランド及び狭いデスティネーションオペランドを示すパックドデータ命令を受信する手段を備えるプロセッサを含む。このプロセッサは、パックドデータ命令を、第1の狭いソースパックドデータオペランドよりも広く当該第1の狭いソースパックドデータオペランドを含む少なくとも第1の広いソースパックドデータオペランドを示すとともに、狭いデスティネーションオペランドよりも広く当該狭いデスティネーションオペランドを含む広いデスティネーションオペランドを示すマスクされたパックドデータ演算にマッピングする手段も備える。このプロセッサは、マスクされたパックドデータ演算によってストアされるパックドデータ結果の対応する結果データ要素ごとのマスク要素を含むパックドデータ演算マスクを生成する手段も備える。パックドデータ命令によってストアされないマスクされたパックドデータ演算によってストアされる結果データ要素に対応する全てのマスク要素は、マスクアウトするものである。
例23は、例22のシステムを含み、オプションとして、第1の狭いソースパックドデータオペランドのデータ要素をパックドデータ結果のデータ要素と整列させる手段を更に備える。
例24は、例10〜19のいずれかの方法を実行する装置を含む。
例25は、例10〜19のいずれかの方法を実行する手段を備える装置を含む。
例26は、例10〜19のいずれかの方法を実行する手段を備えるプロセッサを含む。
例27は、ダイナミックランダムアクセスメモリ(DRAM)と、例10〜19のいずれかの方法を実行する手段を備える、上記DRAMと結合されたプロセッサとを備えるコンピューターシステムを含む。
例28は、本明細書において実質的に説明したような方法を実行する装置を含む。
例29は、本明細書において実質的に説明したような方法を実行する手段を備える装置を含む。
この説明及び特許請求の範囲において、「結合された」及び「接続された」という用語が、それらの派生語とともに用いられている。これらの用語は互いに同義語として意図されていないことが理解されるべきである。逆に、特定の実施形態では、「接続された」は、2つ以上の要素が互いに直接物理的又は電気的に接触していることを示すのに用いることができる。「結合された」は、2つ以上の要素が直接物理的又は電気的に接触していることを意味することができる。しかしながら、「結合された」は、2つ以上の要素が互いに直接接触していないが、それでも、互いに協働又は相互作用することも意味することができる。図では、矢印が接続及び結合を示すのに用いられる。
この説明及び特許請求の範囲において、「ロジック」という用語が用いられている場合がある。ロジックは、本明細書において用いられるとき、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組合せを含むことができる。ロジックの例には、集積回路部、特定用途向け集積回路、アナログ回路、デジタル回路、プログラムされたロジックデバイス、命令を含むメモリデバイス等が含まれる。幾つかの実施形態では、ハードウェアロジックは、他の回路部構成要素とともにトランジスタ及び/又はゲートを潜在的に含むことができる。
「及び/又は」という用語が用いられている場合がある。「及び/又は」という用語は、本明細書において用いられるとき、一方若しくは他方又は双方を意味する(例えば、A及び/又はBは、A若しくはB、又はA及びBの双方を意味する)。
上記説明では、説明の目的で、本発明の実施形態の十分な理解を提供するために、多数の具体的な詳細が述べられてきた。しかしながら、これらの具体的な詳細のうちの幾つかがなくても1つ又は複数の他の実施形態を実施することができることが当業者には明らかであろう。説明した特定の実施形態は、本発明を限定するためではなく本発明を例示の実施形態を通じて例示するために提供されている。本発明の範囲は、これらの具体的な例によって決定されるべきではなく、特許請求の範囲のみによって決定されるべきである。それ以外の場合には、よく知られた回路、構造体、デバイス、及び演算は、説明の理解を分かりにくくしないようにブロック図の形式又は細部を伴わずに示されている。
適切であると考えられる場合には、参照符号、又は参照符号の末端部分が、別段の指定がない限り又は別段明確に明らかでない限り、オプションとして類似の又は同じ特性を有する場合がある対応する要素又は類似する要素を示すために図の間で繰り返されている。複数の構成要素が説明されている幾つかの場合には、それらの構成要素は、単一の構成要素内に組み込むことができる。単一の構成要素が説明されている他の場合には、その単一の構成要素を複数の構成要素に分割することができる。
様々な演算及び方法が説明されてきた。これらの方法のうちの幾つかは、比較的基本的な形式で流れ図に説明されているが、演算は、オプションとして、これらの方法に追加することができ、及び/又はこれらの方法から除去することができる。加えて、流れ図は、例示の実施形態による演算の特定の順序を示しているが、その特定の順序は例示である。代替の実施形態は、オプションとして演算を異なる順序で実行し、或る特定の演算を組み合わせ、或る特定の演算を重ねる等することができる。
幾つかの実施形態は、機械可読媒体を備える製造物品(例えば、コンピュータープログラム製品)を含む。この媒体は、機械によって可読な形式で情報を提供する、例えばストアするメカニズムを含むことができる。機械可読媒体は、機械によって実行された場合及び/又は実行されたとき、本明細書において開示された演算、方法、又は技法のうちの1つを当該機械に実行させ及び/又は機械がこれを実行することをもたらすように動作可能な1つ又は複数の命令を提供することができる、すなわち、当該媒体にストアしておくことができる。
幾つかの実施形態では、機械可読媒体は、有形の及び/又は非一時的な機械可読記憶媒体を含むことができる。例えば、有形の及び/又は非一時的な機械可読記憶媒体は、フロッピー(登録商標)ディスケット、光記憶媒体、光ディスク、光データ記憶デバイス、CD−ROM、磁気ディスク、光磁気ディスク、読み出し専用メモリ(ROM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、フラッシュメモリ、相変化メモリ、相変化データ記憶材料、不揮発性メモリ、不揮発性データ記憶デバイス、非一時的メモリ、非一時的データ記憶デバイス等を含むことができる。非一時的な機械可読記憶媒体は、一時的な伝播信号からなるものではない。別の実施形態では、機械可読媒体は、一時的機械可読通信媒体、例えば、搬送波、赤外線信号、デジタル信号等の電気的伝播信号、光学的伝播信号、音響的伝播信号、又は他の形式の伝播信号を含むことができる。
好適な機械の例には、汎用プロセッサ、専用プロセッサ、命令処理装置、デジタル論理回路、集積回路等が含まれるが、これらに限定されるものではない。好適な機械の更に他の例には、そのようなプロセッサ、命令処理装置、デジタル論理回路、又は集積回路を組み込んだコンピューティングデバイス及び他の電子デバイスが含まれる。そのようなコンピューティングデバイス及び電子デバイスの例には、デスクトップコンピューター、ラップトップコンピューター、ノートブックコンピューター、タブレットコンピューター、ネットブック、スマートフォン、携帯電話、サーバー、ネットワークデバイス(例えば、ルーター及びスイッチ)、モバイルインターネットデバイス(MID)、メディアプレイヤー、スマートテレビ、ネットトップ、セットトップボックス、及びビデオゲームコントローラーが含まれるが、これらに限定されるものではない。
また、この明細書全体を通じて、例えば、「1つの実施形態」、「一実施形態」、「1つ又は複数の実施形態」というとき、これは、特定の特徴が本発明の実施において含まれ得ることを示すことが理解されるべきである。同様に、この説明において、様々な特徴は、開示を能率化するとともに様々な発明の態様の理解を助ける目的で、単一の実施形態、図、又はその説明においてともにグループ化されることがあることが理解されるべきである。しかしながら、開示のこの方法は、本発明が各請求項において明確に列挙されたものよりも多くの特徴を必要とするという意図を反映するものと解釈されるべきではない。逆に、添付の特許請求の範囲が反映しているように、本発明の態様は、単一の開示された実施形態の全ての特徴よりも少ないものに存し得る。したがって、この詳細な説明に続く特許請求の範囲は、ここでこの詳細な説明に明確に組み込まれ、各請求項は、本発明の個々の実施形態として自立している。

Claims (21)

  1. プロセッサであって、
    少なくとも第1の狭いソースパックドデータオペランド及び狭いデスティネーションオペランドを示すパックドデータ命令を、前記第1の狭いソースパックドデータオペランドよりも広く該第1の狭いソースパックドデータオペランドを含む少なくとも第1の広いソースパックドデータオペランドを示すとともに、前記狭いデスティネーションオペランドよりも広く該狭いデスティネーションオペランドを含む広いデスティネーションオペランドを示すマスクされたパックドデータ演算にマッピングするデコードユニットと、
    前記デコードユニットと結合された実行ユニットであって、該実行ユニットは、パックドデータ演算マスクを用いて、前記マスクされたパックドデータ演算を実行し、前記パックドデータ演算マスクは、前記マスクされたパックドデータ演算によってストアされるパックドデータ結果の対応する結果データ要素ごとのマスク要素を含み、前記パックドデータ命令によってストアされない前記マスクされたパックドデータ演算によってストアされる複数の結果データ要素に対応する全てのマスク要素は、マスクアウトするものであり、前記実行ユニットは、前記パックドデータ結果を前記広いデスティネーションオペランドにストアする、実行ユニットと、
    を備える、プロセッサ。
  2. 前記実行ユニットは、前記広いデスティネーションオペランドに対応するレジスタの幅全体を書き込み、前記狭いデスティネーションオペランドは、前記レジスタの前記幅の一部分のみに対応する、請求項1に記載のプロセッサ。
  3. 前記実行ユニットは、前記パックドデータ命令に関連付けられた演算によって更新される複数の結果データ要素がレジスタの最下位部分と該レジスタの最上位部分との間の該レジスタの中間部分のみを占有する前記パックドデータ結果をストアする、請求項1又は2に記載のプロセッサ。
  4. 前記デコードユニットは、第2の狭いソースパックドデータオペランドも示す前記パックドデータ命令を受信し、前記デコードユニットは、前記パックドデータ命令を、前記第2の狭いソースパックドデータオペランドよりも広く該第2の狭いソースパックドデータオペランドを含む第2の広いソースパックドデータオペランドも示す前記マスクされたパックドデータ演算にマッピングする、請求項1から3のいずれか1項に記載のプロセッサ。
  5. 前記デコードユニットは、前記第1の狭いソースパックドデータオペランド及び前記第2の狭いソースパックドデータオペランドにおける対応するビット位置にない対応しないデータ要素の少なくとも1つの対に対する演算を示す前記パックドデータ命令を受信し、前記プロセッサは、前記マスクされたパックドデータ演算を実行するときに、前記対応しないデータ要素の対を、前記実行ユニットによって演算される対応するビット位置に配置する演算を更に実行する、請求項4に記載のプロセッサ。
  6. 前記プロセッサは、シフト演算、シャッフル演算、及び置換演算のうちの1つを実行することによって、前記対応しないデータ要素の対を前記対応するビット位置に配置する前記演算を実行する、請求項5に記載のプロセッサ。
  7. 前記パックドデータ命令は、パックドデータ演算マスクを示さない、請求項1から6のいずれか1項に記載のプロセッサ。
  8. 前記パックドデータ命令は、前記マスクされたパックドデータ演算を実行するために前記実行ユニットによって用いられる前記パックドデータ演算マスクよりも少ないマスク要素を有するパックドデータ演算マスクを示す、請求項1から6のいずれか1項に記載のプロセッサ。
  9. 前記実行ユニットは、マスクアウトされたマスク要素に対応する前記複数の結果データ要素の各々の値が変更されないとともに、マスクされていないマスク要素に対応する前記複数の結果データ要素の各々の値が前記パックドデータ命令に関連付けられた演算によって更新される、前記パックドデータ結果をストアする、請求項1から8のいずれか1項に記載のプロセッサ。
  10. プロセッサにおける方法であって、
    少なくとも第1の狭いソースパックドデータオペランド及び狭いデスティネーションオペランドを示すパックドデータ命令を受信することと、
    前記パックドデータ命令を、前記第1の狭いソースパックドデータオペランドよりも広く該第1の狭いソースパックドデータオペランドを含む少なくとも第1の広いソースパックドデータオペランドを示すとともに、前記狭いデスティネーションオペランドよりも広く該狭いデスティネーションオペランドを含む広いデスティネーションオペランドを示すマスクされたパックドデータ演算にマッピングすることと、
    前記マスクされたパックドデータ演算によってストアされるパックドデータ結果の対応する結果データ要素ごとのマスク要素を含むパックドデータ演算マスクを生成することであって、前記パックドデータ命令によってストアされない前記マスクされたパックドデータ演算によってストアされる複数の結果データ要素に対応する全てのマスク要素は、マスクアウトするものであることと、
    前記パックドデータ演算マスクを用いて前記マスクされたパックドデータ演算を実行することと、
    前記パックドデータ結果を前記広いデスティネーションオペランドにストアすることと、
    を含む、プロセッサにおける方法。
  11. 前記パックドデータ結果をストアすることは、前記広いデスティネーションオペランドに対応するレジスタの幅全体を書き込むことを含み、前記狭いデスティネーションオペランドは、前記レジスタの前記幅の一部分のみに対応する、請求項10に記載の方法。
  12. 前記ストアすることは、前記パックドデータ命令に関連付けられた演算によって更新される複数の結果データ要素がレジスタの最下位部分と該レジスタの最上位部分との間の該レジスタの中間部分のみを占有する前記パックドデータ結果をストアすることを含む、請求項10又は11に記載の方法。
  13. 前記受信することは、第2の狭いソースパックドデータオペランドも示す前記パックドデータ命令を受信することを含み、前記マッピングすることは、前記パックドデータ命令を、前記第2の狭いソースパックドデータオペランドよりも広く該第2の狭いソースパックドデータオペランドを含む第2の広いソースパックドデータオペランドも示す前記マスクされたパックドデータ演算にマッピングすることを含む、請求項10から12のいずれか1項に記載の方法。
  14. 請求項13に記載の方法であって、前記受信することは、前記第1の狭いソースパックドデータオペランド及び前記第2の狭いソースパックドデータオペランドにおける対応するビット位置にない対応しないデータ要素の少なくとも1つの対に対する演算を示す前記パックドデータ命令を受信することを含み、該方法は、前記対応しないデータ要素の対を、前記マスクされたパックドデータ演算によって演算される対応するビット位置に配置する演算を実行することを更に含む、請求項13に記載の方法。
  15. 前記対応しないデータ要素の対を対応するビット位置に配置する前記演算を実行することは、シフト演算、シャッフル演算、及び置換演算のうちの1つを実行することを含む、請求項14に記載の方法。
  16. 前記受信することは、パックドデータ演算マスクを示さない前記パックドデータ命令を受信することを含む、請求項10から15のいずれか1項に記載の方法。
  17. 前記受信することは、前記生成されるパックドデータ演算マスクよりも少ない数のマスク要素を有する第2のパックドデータ演算マスクを示す前記パックドデータ命令を受信することを含む、請求項10から15のいずれか1項に記載の方法。
  18. 前記第1の狭いソースパックドデータオペランドは、レジスタにおいて前記第1の広いソースパックドデータオペランド上にエイリアスされる、請求項10から17のいずれか1項に記載の方法。
  19. 前記ストアすることは、マスクアウトされたマスク要素に対応する前記複数の結果データ要素の各々の値が変更されないとともに、マスクされていないマスク要素に対応する前記複数の結果データ要素の各々の値が前記パックドデータ命令に関連付けられた演算によって更新される、前記パックドデータ結果をストアすることを含む、請求項10から18のいずれか1項に記載の方法。
  20. 命令を処理するシステムであって、
    相互接続部と、
    前記相互接続部と結合されたプロセッサであって、
    少なくとも第1の狭いソースパックドデータオペランド及び狭いデスティネーションオペランドを示すパックドデータ命令を、前記第1の狭いソースパックドデータオペランドを含む少なくとも第1の広いソースパックドデータオペランドを示すとともに、前記狭いデスティネーションオペランドを含む広いデスティネーションオペランドを示すマスクされたパックドデータ演算にマッピングする第1のユニットと、
    前記第1のユニットと結合された集積回路部であって、該集積回路部は、前記マスクされたパックドデータ演算によってストアされるパックドデータ結果の対応するデータ要素ごとのマスクビットを含むマスクを用いて、前記マスクされたパックドデータ演算を実行し、前記パックドデータ命令によってストアされるデータ要素に対応するマスクビットのみをマスクアウトしないことが許可される、集積回路部と、
    を備える、プロセッサと、
    前記相互接続部と結合されて前記パックドデータ命令をストアするダイナミックランダムアクセスメモリ(DRAM)と、
    を備える、命令を処理するシステム。
  21. 前記集積回路部は、前記第1の狭いソースパックドデータオペランドのデータ要素を前記パックドデータ結果のデータ要素と整列させるデータ再配置演算を更に実行する、請求項20に記載のシステム。
JP2014058424A 2013-03-30 2014-03-20 マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム Active JP5829714B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/854,089 US9477467B2 (en) 2013-03-30 2013-03-30 Processors, methods, and systems to implement partial register accesses with masked full register accesses
US13/854,089 2013-03-30

Publications (2)

Publication Number Publication Date
JP2014199663A true JP2014199663A (ja) 2014-10-23
JP5829714B2 JP5829714B2 (ja) 2015-12-09

Family

ID=50686951

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014058424A Active JP5829714B2 (ja) 2013-03-30 2014-03-20 マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム

Country Status (6)

Country Link
US (2) US9477467B2 (ja)
JP (1) JP5829714B2 (ja)
KR (1) KR101597774B1 (ja)
CN (2) CN107918546B (ja)
DE (1) DE102014004564A1 (ja)
GB (1) GB2515862B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018516400A (ja) * 2015-06-02 2018-06-21 インテル・コーポレーション パックドデータアライメントプラス演算命令、プロセッサ、方法、及びシステム
WO2020066375A1 (ja) * 2018-09-25 2020-04-02 日本電気株式会社 情報処理装置、情報処理方法、プログラム

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI681300B (zh) * 2014-11-14 2020-01-01 美商凱為有限責任公司 在64位元資料路徑上實行128位元simd操作之方法、系統及電腦可讀取媒體
US20160179548A1 (en) * 2014-12-22 2016-06-23 Intel Corporation Instruction and logic to perform an inverse centrifuge operation
US9916164B2 (en) * 2015-06-11 2018-03-13 Intel Corporation Methods and apparatus to optimize instructions for execution by a processor
US9779469B2 (en) 2015-08-17 2017-10-03 Qualcomm Incorporated Register spill management for general purpose registers (GPRs)
US11681531B2 (en) * 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US20170192789A1 (en) * 2015-12-30 2017-07-06 Rama Kishnan V. Malladi Systems, Methods, and Apparatuses for Improving Vector Throughput
US11204764B2 (en) * 2016-03-31 2021-12-21 Intel Corporation Processors, methods, systems, and instructions to Partition a source packed data into lanes
US10210323B2 (en) * 2016-05-06 2019-02-19 The Boeing Company Information assurance system for secure program execution
GB2564853B (en) * 2017-07-20 2021-09-08 Advanced Risc Mach Ltd Vector interleaving in a data processing apparatus
GB2568230B (en) * 2017-10-20 2020-06-03 Graphcore Ltd Processing in neural networks
CN111443948B (zh) * 2020-03-30 2022-09-09 龙芯中科技术股份有限公司 指令执行方法、处理器和电子设备
US11494190B2 (en) * 2021-03-31 2022-11-08 Arm Limited Circuitry and method for controlling a generated association of a physical register with a predicated processing operation based on predicate data state

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999050740A1 (en) * 1998-03-31 1999-10-07 Intel Corporation Executing partial-width packed data instructions
US6334183B1 (en) * 1997-11-18 2001-12-25 Intrinsity, Inc. Method and apparatus for handling partial register accesses
US20120216011A1 (en) * 2011-02-18 2012-08-23 Darryl Gove Apparatus and method of single-instruction, multiple-data vector operation masking

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100329338B1 (ko) 1994-12-02 2002-07-18 피터 엔. 데트킨 복합피연산자의팩연산을수행하는마이크로프로세서
US6092094A (en) * 1996-04-17 2000-07-18 Advanced Micro Devices, Inc. Execute unit configured to selectably interpret an operand as multiple operands or as a single operand
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6442676B1 (en) * 1999-06-30 2002-08-27 Bull Hn Information Systems Inc. Processor with different width functional units ignoring extra bits of bus wider than instruction width
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
JP3924577B2 (ja) 2002-05-22 2007-06-06 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 制御ワード巻き上げ
JP3857614B2 (ja) 2002-06-03 2006-12-13 松下電器産業株式会社 プロセッサ
US7251722B2 (en) * 2004-05-11 2007-07-31 Mistletoe Technologies, Inc. Semantic processor storage server architecture
US8447962B2 (en) * 2009-12-22 2013-05-21 Intel Corporation Gathering and scattering multiple data elements
US8549264B2 (en) * 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
US20120254592A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location
US20120254589A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian System, apparatus, and method for aligning registers
US20120254588A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
EP2739076B1 (en) * 2011-08-31 2016-08-03 Huawei Technologies Co., Ltd. Method, system and device for implementing multicast in shared network
US9100184B2 (en) * 2011-12-22 2015-08-04 Intel Corporation Instructions processors, methods, and systems to process BLAKE secure hashing algorithm
US9389861B2 (en) * 2011-12-22 2016-07-12 Intel Corporation Systems, apparatuses, and methods for mapping a source operand to a different range
CN106445469B (zh) * 2011-12-22 2019-03-08 英特尔公司 处理器、机器可读存储介质和计算机实现的系统
US9632777B2 (en) * 2012-08-03 2017-04-25 International Business Machines Corporation Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry
US9588766B2 (en) * 2012-09-28 2017-03-07 Intel Corporation Accelerated interlane vector reduction instructions
US9665368B2 (en) * 2012-09-28 2017-05-30 Intel Corporation Systems, apparatuses, and methods for performing conflict detection and broadcasting contents of a register to data element positions of another register
US9189398B2 (en) * 2012-12-28 2015-11-17 Intel Corporation Apparatus and method for memory-mapped register caching
US9244684B2 (en) * 2013-03-15 2016-01-26 Intel Corporation Limited range vector memory access instructions, processors, methods, and systems
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
US9442731B2 (en) * 2014-03-13 2016-09-13 Intel Corporation Packed two source inter-element shift merge processors, methods, systems, and instructions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6334183B1 (en) * 1997-11-18 2001-12-25 Intrinsity, Inc. Method and apparatus for handling partial register accesses
WO1999050740A1 (en) * 1998-03-31 1999-10-07 Intel Corporation Executing partial-width packed data instructions
US20120216011A1 (en) * 2011-02-18 2012-08-23 Darryl Gove Apparatus and method of single-instruction, multiple-data vector operation masking

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
CSNB200600309001; 大貫広幸: TECH I vol.31 x86アセンブラ入門 , 20060101, Pages:236〜263, CQ出版株式会社 *
CSND201000316003; 北郷達郎: 'CPU技術大全' 日経Win PC 第16巻,第10号, 20100529, Pages:122〜135, 日経BP社 *
CSND201100050003; 塩田紳二: '詳解・Sandy Bridge アーキテクチャ' ASCII.technologies 第16巻,第4号, 20110224, Pages:28〜35, 株式会社アスキー・メディアワークス *
JPN6015009801; 塩田紳二: '詳解・Sandy Bridge アーキテクチャ' ASCII.technologies 第16巻,第4号, 20110224, Pages:28〜35, 株式会社アスキー・メディアワークス *
JPN6015009802; 大貫広幸: TECH I vol.31 x86アセンブラ入門 , 20060101, Pages:236〜263, CQ出版株式会社 *
JPN6015009803; 北郷達郎: 'CPU技術大全' 日経Win PC 第16巻,第10号, 20100529, Pages:122〜135, 日経BP社 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018516400A (ja) * 2015-06-02 2018-06-21 インテル・コーポレーション パックドデータアライメントプラス演算命令、プロセッサ、方法、及びシステム
US10936312B2 (en) 2015-06-02 2021-03-02 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
WO2020066375A1 (ja) * 2018-09-25 2020-04-02 日本電気株式会社 情報処理装置、情報処理方法、プログラム
JPWO2020066375A1 (ja) * 2018-09-25 2021-08-30 日本電気株式会社 情報処理装置、情報処理方法、プログラム

Also Published As

Publication number Publication date
DE102014004564A1 (de) 2014-10-02
CN107918546B (zh) 2022-02-22
JP5829714B2 (ja) 2015-12-09
KR101597774B1 (ko) 2016-02-26
CN104077107B (zh) 2017-12-22
CN104077107A (zh) 2014-10-01
GB201405413D0 (en) 2014-05-07
US20170109164A1 (en) 2017-04-20
US9477467B2 (en) 2016-10-25
GB2515862B (en) 2016-11-02
KR20140118924A (ko) 2014-10-08
US20140297994A1 (en) 2014-10-02
GB2515862A (en) 2015-01-07
CN107918546A (zh) 2018-04-17
US9934032B2 (en) 2018-04-03

Similar Documents

Publication Publication Date Title
JP5829714B2 (ja) マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム
JP6351682B2 (ja) 装置および方法
US11442734B2 (en) Packed data element predication processors, methods, systems, and instructions
JP6238497B2 (ja) プロセッサ、方法、及びシステム
JP5918287B2 (ja) 演算マスクのマスクされていない要素をコンソリデートする命令処理装置、方法、システム、及びプログラム
JP5926754B2 (ja) 限定範囲ベクトルメモリアクセス命令、プロセッサ、方法、及びシステム
JP6340097B2 (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
JP6466388B2 (ja) 方法及び装置
JP6419205B2 (ja) プロセッサ、方法、システム、コンピュータシステム、およびコンピュータ可読記憶媒体
KR101713841B1 (ko) 마스크 레지스터에서의 비트들을 반전 및 치환하기 위한 장치 및 방법
JP2018500658A (ja) インデックスおよび即値を用いてベクトル置換を実行するための方法および装置
JP2018506096A (ja) ベクトルビットシャッフルを実行するための方法および装置
JP2017534114A (ja) Z順序曲線において次のポイントの座標を計算するためのベクトル命令
JP2018500659A (ja) 高速ベクトルによる動的なメモリ競合検出
JP2017534982A (ja) 4d座標から4dのz曲線インデックスを計算するための機械レベル命令
JP2018500629A (ja) 3d座標から3dのz曲線インデックスを計算するための機械レベル命令
JP2017538215A (ja) 逆分離演算を実行するための命令及びロジック
JP2018500666A (ja) ベクトルビットギャザーを実行するための方法および装置
KR101635856B1 (ko) 데이터 요소에 있는 비트들의 제로화를 위한 시스템, 장치, 및 방법
EP3798824A1 (en) Apparatus and method for store pairing with reduced hardware requirements

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150317

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150717

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150825

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150924

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151022

R150 Certificate of patent or registration of utility model

Ref document number: 5829714

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250