JP2014182800A - データ要素内のビットをゼロ化するためのシステム、装置、および方法 - Google Patents

データ要素内のビットをゼロ化するためのシステム、装置、および方法 Download PDF

Info

Publication number
JP2014182800A
JP2014182800A JP2014032531A JP2014032531A JP2014182800A JP 2014182800 A JP2014182800 A JP 2014182800A JP 2014032531 A JP2014032531 A JP 2014032531A JP 2014032531 A JP2014032531 A JP 2014032531A JP 2014182800 A JP2014182800 A JP 2014182800A
Authority
JP
Japan
Prior art keywords
operand
data element
source
instruction
bits
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
JP2014032531A
Other languages
English (en)
Other versions
JP5753603B2 (ja
Inventor
Ould-Ahmed-Vall Elmoustapha
オウルド−アハムド−ヴァル、エルモウスタファ
Valentine Robert
バレンタイン、ロバート
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 JP2014182800A publication Critical patent/JP2014182800A/ja
Application granted granted Critical
Publication of JP5753603B2 publication Critical patent/JP5753603B2/ja
Expired - Fee Related 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/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/30098Register arrangements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

【課題】SIMD処理系において、ソースの各データ要素内の特定の位置から開始するビットをゼロ設定するコントロールベクトルを使用する命令実行のためのシステム、方法および装置を提供する。
【解決手段】VPBZHIの実行が第2のソースのデータ要素ごとに基づき、データ要素内の開始点よりも高い(より上位の)ビットのゼロ化を引き起こす。開始点は第1のソース内のデータ要素の内容により定義される。結果として得られたデータ要素はデスティネーションの対応するデータ要素ポジションに格納される。
【選択図】図1

Description

本発明の分野は一般的にコンピュータプロセッサアーキテクチャに関し、より具体的には、実行時に特定の結果を引き起こす命令に関する。
命令セット、または命令セットアーキテクチャ(ISA)はプログラミングに関連するコンピュータアーキテクチャの一部であり、ネイティブデータタイプ、命令、レジスタアーキテクチャ、アドレッシングモード、メモリアーキテクチャ、割り込みおよび例外処理、および外部入力および出力(I/O)を含んでいてもよい。用語、命令は本明細書において、マイクロ命令またはマイクロオペレーションとは対照的に、プロセッサのデコーダがマクロ命令をデコードすることから結果として得られる、実行のためにプロセッサに提供される命令であるマクロ命令を一般的に指すことに留意すべきである。
本発明は同様の参照符号が同様の要素を示す添付の図面の図において例として示されており、且つこれらに限定されない。
本発明の一実施形態による1つのアクティブビットベクトルライトマスク要素の数、ベクトルサイズおよびデータ要素サイズとの間の相関関係を示す。
1つ以上の命令を実行するプロセッサ(プロセッサコア)の例示的な実施形態のブロック図である。
VPBZHIの動作の例示的な説明図を示す。 VPBZHIの動作の例示的な説明図を示す。
プロセッサ内のVPBZHI命令の実行の実施形態を示す。
VPBZHI命令を処理するための方法の実施形態を示す。
本発明の一実施形態によるレジスタアーキテクチャ600のブロック図である。
本発明の実施形態による例示的なインオーダーパイプラインおよび例示的なレジスタリネーミング、アウトオブオーダー発行/実行パイプラインの両方を示すブロック図である。
本発明の実施形態によるプロセッサに含まれるインオーダーアーキテクチャコアの例示的な実施形態および例示的なレジスタリネーミング、アウトオブオーダー発行/実行アーキテクチャコアの両方を示すブロック図である。
コアがチップ内のいくつかの論理ブロック(同じタイプおよび/または異なるタイプの他のコアを含む)の1つであろうより具体的かつ例示的なインオーダーコアアーキテクチャのブロック図を示す。 コアがチップ内のいくつかの論理ブロック(同じタイプおよび/または異なるタイプの他のコアを含む)の1つであろうより具体的例示的なインオーダーコアアーキテクチャのブロック図を示す。
本発明の実施形態による1つ以上のコアを有していてもよい、統合型メモリコントローラを有していてもよい、および統合型グラフィックスを有していてもよいプロセッサ900のブロック図である。
例示的なコンピュータアーキテクチャのブロック図である。 例示的なコンピュータアーキテクチャのブロック図である。 例示的なコンピュータアーキテクチャのブロック図である。 例示的なコンピュータアーキテクチャのブロック図である。
本発明の実施形態によるソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するためのソフトウェア命令コンバータの使用を対比するブロック図である。
以下の説明において、多数の特定の詳細が記述されている。しかしながら、本発明の実施形態はこれらの特定の詳細なしに実施されてもよいことを理解されたい。他の例において、周知の回路、構造および技術はこの説明の理解を曖昧にしないために詳細には示されていない。
本明細書中の「一実施形態」、「実施形態」、「実施形態例」などへの参照は、記述された実施形態が特定の特徴、構造、または特性を含んでいてもよいが、すべての実施形態が必ずしも特定の特徴、構造、または特性を含まなくてもよいことを示している。さらに、そのような語句は必ずしも同じ実施形態を指すものではない。尚、特定の特徴、構造、または特性が実施形態に関連して説明されている際には、明記されているか否かに関わらず他の実施形態に関連するそのような特徴、構造、または特性に関わる当業者の知識の範囲内であるものと思われる。
概要
命令セットアーキテクチャはISAを実装するプロセッサの内部デザインであるマイクロアーキテクチャとは区別される。異なるマイクロアーキテクチャを有するプロセッサは共通の命令セットを共有することができる。例えば、Intel Pentium(登録商標)4プロセッサ、Intel Coreプロセッサ、およびカリフォルニア州サニーベールのアドバンスト・マイクロ・デバイセズ社のプロセッサはx86命令セット(いくつかの拡張機能が新しいバージョンに追加された)のほとんど同一のバージョンを実装するが、異なる内部デザインを有している。例えば、ISAの同じレジスタアーキテクチャは、専用物理レジスタ、レジスタリネーミングメカニズム(例えば、レジスタエイリアス(別名)テーブル(RAT)、米国特許第5,446,912号に記載されているリオーダーバッファ(ROB)およびリタイアメントレジスタファイルの使用;米国特許5,207,132号に記載されている複数のマップおよびレジスタのプールの使用)を使用する1つ以上の動的に割り当てられた物理レジスタなどを含む、周知の技術を使用する異なるマイクロアーキテクチャで異なる方法で実装されてもよい。特に指定のない限り、語句レジスタアーキテクチャ、レジスタファイル、およびレジスタはソフトウェア/プログラマに見えるものおよび命令がレジスタを指定する方法を参照する。特異性が所望される所では、異なる形容詞的可視性が所与のマイクロアーキテクチャ(例えば、物理レジスタ、リオーダーバッファ、リタイアメントレジスタ、レジスタプール)においてレジスタを指定するために使用される一方、形容詞的論理的、アーキテクチャ的、またはソフトウェア可視性がレジスタアーキテクチャにおいてレジスタ/ファイルを示すために使用されるであろう。
命令セットは1つ以上の命令フォーマットを含む。所与の命令フォーマットは、とりわけ、実行される操作およびその操作の対象であるオペランドを指定するための様々なフィールド(ビット数、ビットのロケーション)を規定する。所与の命令は所与の命令フォーマットを使用して表現され、操作とオペランドを指定する。命令ストリームはシーケンス内の各命令が命令フォーマット内の命令の発生である所の命令の特定のシーケンスである。
科学、金融、自動ベクトル化された汎用目的、RMS(認識、マイニング、および合成)/ビジュアルおよびマルチメディアアプリケーション(例えば、2D/3Dグラフィックス、画像処理、ビデオ圧縮/解凍、音声認識アルゴリズムおよびオーディオ操作)は多くの場合、同じ操作が大量のデータアイテムに対して実行されることを必要とする(「データ並列化」と呼ぶ)。単一命令複数データ(SIMD)はプロセッサに複数のデータアイテムに対して同じ操作を実行させる命令のタイプを指す。SIMD技術はレジスタ内のビットをその各々が別々の値を表す固定サイズの複数のデータ要素に論理的に分割することができるプロセッサに特に適している。例えば、64ビットレジスタのビットは別々の16ビット値をそれぞれ表す4つの別々の16ビットデータ要素として操作されるソースオペランドとして指定されてもよい。別の例として、256ビットレジスタのビットは4つの別々の64ビットのパックドデータ要素(クワッド−ワード(Q)サイズデータ要素)、8つの別々の32ビットのパックドデータ要素(ダブルワード(D)サイズデータ要素)、16の別々の16ビットのパックドデータ要素(ワード(W)サイズデータ要素)、または32の別々の8ビットのデータ要素(バイト(B)サイズデータ要素)として操作されるソースオペランドとして指定されてもよい。データのこのタイプはパックドデータタイプまたはベクトルデータタイプと呼ばれ、このデータタイプのオペランドはパックドデータオペランドまたはベクトルオペランドと呼ばれる。換言すれば、パックドデータアイテムまたはベクトルはパックドデータ要素のシーケンスを指し、パックドデータオペランドまたはベクトルオペランドはSIMD命令のソースまたはデスティネーションオペランドである(パックドデータ命令またはベクトル命令としても知られる)。
一例として、SIMD命令の1つのタイプは同じサイズのデスティネーションベクトルオペランド(結果ベクトルオペランドとも呼ばれる)を、同一数のデータ要素でおよび同じデータ要素の順序で生成するために垂直様式で2つのソースベクトルオペランドに対して実行される単一のベクトル演算を指定する。デスティネーションベクトルオペランドのデータ要素がデスティネーションまたは結果データ要素と呼ばれる一方、ソースベクトルオペランドのデータ要素はソースデータ要素と呼ばれる。これらのソースベクトルオペランドは同じサイズであり同じ幅のデータ要素を含むので、これらは同一数のデータ要素を含む。2つのソースベクトルオペランド内の同じビットポジション内のソースデータ要素はデータ要素の対を形成する(対応するデータ要素とも呼ばれ、つまり各ソースオペランドのデータ要素ポジション0のデータ要素が対応し、各ソースオペランドのデータ要素ポジション1のデータ要素が対応するなど)。そのSIMD命令により指定される操作は結果データ要素のマッチング数を生成するためにソースデータ要素のこれらの対のそれぞれに対して別々に実行されるため、ソースデータ要素の各対は対応する結果データ要素を有する。操作は垂直であるので、および結果ベクトルオペランドのサイズが同じであり、同一数のデータ要素を有しており、および結果データ要素がソースベクトルオペランドと同じデータ要素の順序に格納されているので、結果データ要素はソースベクトルオペランド内のソースデータ要素のそれらの対応する対として結果ベクトルオペランドの同じビットポジションにある。SIMD命令のこの例示的なタイプに加えて、様々な他のタイプのSIMD命令がある(例えば、1つのみを有するまたは2つ以上のソースベクトルオペランドを有する;水平様式で動作する;異なるサイズ結果ベクトルオペランドを生成する、異なるサイズのデータ要素を有する、および/または異なるデータ要素の順序を有する)。用語デスティネーションベクトルオペランド(またはデスティネーションオペランド)は、別の命令により(別の命令による同じ場所の指定により)ソースオペランドとしてアクセスされてもよいように、その位置でのそのデスティネーションオペランドのストレージ(その命令により指定されたレジスタであるかまたはメモリアドレスで)を含む命令により指定された操作を実行する直接の結果として定義されることが理解されるべきである
x86、MMX(商標)、ストリーミングSIMD拡張命令(SSE)、SSE2、SSE3、SSE4.1、およびSSE4.2命令を含む命令セットを有するIntel(登録商標)Core(商標)プロセッサにより使用されるものなどのSIMD技術はアプリケーションパフォーマンスの大幅な向上が有効となる(Core(商標)およびMMX(商標)はカリフォルニア州サンタクララのIntel Corporationの登録商標または商標である)。アドバンストベクトルエクステンション(AVX)(AVX1およびAVX2)と呼ばれVEX符号化方式を使用する、SIMD拡張命令の追加セットはリリースされておりおよび/または公開されている(例えば、2011年10月、Intel(登録商標)64およびIA−32アーキテクチャソフトウェア開発者マニュアルを参照、2011年6月、Intel(登録商標)アドバンストベクトルエクステンションプログラミングリファレンスを参照)。
以下の説明において、命令セットアーキテクチャ内のこの特定の命令の動作を記述する前に説明が必要となり得るいくつかの項目がある。1つのそのような項目は、条件付きで要素ごとの計算動作を制御するオペランドを断定するために一般的に使用される、「ライトマスクレジスタ」と呼ばれる(以下、用語マスクレジスタがまた使用されてもよく、以下で議論される「K」レジスタのようなライトマスクレジスタと呼ばれる)。以下で使用されるように、ライトマスクレジスタは、ライトマスクレジスタの各アクティブビットがSIMD処理中のベクトルレジスタのパックドデータ要素の操作/更新を管理する複数ビット(16、32、64など)を格納する。典型的には、プロセッサコアで使用可能な1つ以上のライトマスクレジスタがある。
命令セットアーキテクチャは、ベクトル演算を指定するおよびこれらのベクトルレジスタからソースレジスタおよび/またはデスティネーションレジスタを選択するためのフィールドを有する、少なくともいくつかのSIMD命令を含む(例示的なSIMD命令は1つまたは複数のベクトルレジスタのコンテンツ上で実行されるベクトル演算を指定してもよく、そのベクトル演算の結果はベクトルレジスタのいずれかに格納される)。本発明の異なる実施形態は異なるサイズのベクトルレジスタを有してもよく、より多い/より少ない/異なるサイズのデータ要素をサポートしてもよい。
SIMD命令(例えば、バイト、ワード、ダブルワード、クワッドワード)で指定されたマルチビットデータ要素のサイズはベクトルレジスタ内の「データ要素ポジション」のビットロケーションを決定し、ベクトルオペランドのサイズはデータ要素の数を決定する。パックドデータ要素は特定のポジションに格納されたデータを指す。換言すれば、デスティネーションオペランド内のデータ要素のサイズおよびデスティネーションオペランドのサイズに応じて(デスティネーションオペランド内のビットの合計数)(または言い換えると、デスティネーションオペランドのサイズおよびデスティネーションオペランド内のデータ要素の数に応じて)、マルチビットデータ要素ポジションのビットロケーションは結果ベクトルオペランド内で変化する(例えば、結果ベクトルオペランドのためのデスティネーションがベクトルレジスタである場合(この議論においてベクトルレジスタおよびパックドデータ要素レジスタは交換可能に使用される)、次にデスティネーションベクトルレジスタ内のマルチビットデータ要素ポジションのビットロケーションが変化する)。例えば、マルチビットデータ要素のビットロケーションは32ビットのデータ要素上で動作するベクトル演算(データ要素ポジション0はビットロケーション31:0を占有し、データ要素ポジション1はビットロケーション63:32を占有するなど)および64ビットのデータ要素上で動作するベクトル演算(データ要素ポジション0はビットロケーション63:0を占有し、データ要素ポジション1はビットロケーション127:64を占有するなど)との間で異なる。
加えて、図1に示すように本発明の一実施形態による1つのアクティブビットベクトルライトマスク要素の数およびベクトルサイズおよびデータ要素サイズとの間に相関がある。128ビット、256ビット、512ビットのベクトルサイズが示されているが、他の幅も可能である。8ビットバイト(B)、16ビットワード(W)、32ビットダブルワード(D)または単精度浮動小数点、および64ビットクワッドワード(Q)または倍精度浮動小数点のデータ要素サイズが考慮されるが、他の幅もまた可能である。示されるように、ベクトルサイズが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ビットがマスキングのために使用されてもよい。
ベクトルサイズおよびデータ要素サイズの組み合わせに応じて、全64ビットまたは64ビットのサブセットのみのいずれかがライトマスクとして使用されてもよい。一般的に、単一の要素ごとのマスキング制御ビットが使用される際には、マスキングに使用されるベクトルライトマスクレジスタ内のビット数(アクティブビット)はビットでのベクトルデータ要素サイズで除算したビットでのベクトルサイズに等しい。
上記のように、ライトマスクレジスタはベクトルレジスタ(またはメモリロケーション)内の要素に対応するマスクビットを含み、操作が実行されるべき要素を追跡する。この理由のため、ベクトルレジスタに関する限りこれらのマスクビットに対して類似した挙動を複製する共通の操作を有することおよび一般的にライトマスクレジスタ内でこれらのマスクビットを調節することを可能にすることが望ましい。
ソースの各データ要素内の特定の位置から開始するビットをゼロ設定するコントロールベクトルを使用する命令の実施形態が以下に説明される。この命令はベクトルレジスタのデータ要素内のビットを抽出し各データ要素にビットを挿入することを含む多くのビット操作タスクを効率よくベクトル化するために使用されてもよい。以下は命令セットの指定されたビットポジションで始まるベクトルパックドゼロ上位ビット(「VPBZHI」)命令と一般的に呼ばれる命令の実施形態およびそのような命令を実行するのに使用されてもよいシステム、アーキテクチャ、命令フォーマットなどの実施形態である。VPBZHIの実行は第2のソースのデータ要素ごとに基づきデータ要素内の開始点よりも高位(より上位)のビットのゼロ化を引き起こす。開始点は第1のソースのデータ要素の内容により定義される。結果としてのデータ要素はデスティネーションの対応するデータ要素ポジションに格納される。
図2は1つまたは複数のVPBZHI命令204を実行するプロセッサ(プロセッサコア)200の例示的な実施形態のブロック図である。いくつかの実施形態において、プロセッサは汎用プロセッサ(例えば、デスクトップ、ラップトップ、サーバ、およびコンピュータのように使用されるタイプ)であってもよい。代替的に、プロセッサは専用プロセッサであってもよい。適切な専用プロセッサの例としては、限定はされないが、ほんのいくつか例を挙げると、ネットワークプロセッサ、通信プロセッサ、暗号プロセッサ、グラフィックスプロセッサ、コプロセッサ、組込みプロセッサ、デジタル信号プロセッサ(DSP)、およびコントローラなどを含む。プロセッサは任意の様々な複合命令セットコンピューティング(CISC)プロセッサ、様々な縮小命令セットコンピューティング(RISC)プロセッサ、様々な超長命令語(VLIW)プロセッサ、様々なそれらのハイブリッド、または全く他のタイプのプロセッサであってもよい。
プロセッサ200はアーキテクチャ的に可視なレジスタ(例えば、アーキテクチャ的レジスタファイル)205を含む。アーキテクチャ的レジスタはまた本明細書においては単にレジスタとも呼ばれてもよい。特に指定されるまたは明確ではない限り、語句アーキテクチャ的レジスタ、レジスタファイル、およびレジスタはソフトウェアおよび/またはプログラマから見えるレジスタ、および/またはオペランドを識別するためのマクロ命令またはアセンブリ言語命令により指定されるレジスタを指すために本明細書において使用される。これらのレジスタは所与のマイクロアーキテクチャ内の他の非アーキテクチャ的または非アーキテクチャ的な可視的なレジスタに対比される(例えば、命令により使用される一時レジスタ、リオーダーバッファ、リタイアメントレジスタなど)。レジスタはオンダイプロセッサのストレージロケーションを一般的に表す。図示のアーキテクチャ的レジスタはパックドデータレジスタ206を含む。パックドデータレジスタの各々はパックドまたはベクトルデータを格納するように動作可能であってもよい。図示のアーキテクチャ的レジスタはまたパックドデータ操作マスクレジスタ207をも含む。パックドデータ操作マスクレジスタの各々はパックドデータ操作マスクを格納するように動作可能であってもよい。これらのレジスタはこの説明ではライトマスクレジスタと呼ばれてもよい。パックドデータオペランドはパックドデータ操作マスクレジスタ207内に格納されてもよい。
プロセッサはまた実行ロジック208を含む。実行ロジックは1つまたは複数のVPBZHI命令204を実行するまたは処理するように動作可能である。いくつかの実施形態において、実行ロジックはこれらの命令を実行するための特定のロジック(例えば、潜在的にファームウェアと組み合わされた特定の回路またはハードウェア)を含んでいてもよい。
図3Aおよび図3BはVPBZHIの動作の例示的な説明図を示す。図示の例3Aにおいて、第1のソースレジスタ301からのデータ要素はデータ要素ごとに基づき第2のソースレジスタ/メモリロケーション303内の対応するデータ要素内のビットのゼロ化のための開始点を提供する。この例において、第1および第2のソース301、303の両方はポジション0−3(右側の最下位)内に4つのデータ要素を有する。データ要素ポジション0において、第1のソース301は16進数形式で00000002の値を有する。これは10進表記法において2であり、第2のソース303のビットポジション2はゼロ化が開始してもよい点であることを示す。しかしながら、このビットポジションにおけるライトマスク305の値のため、ライトマスキングがこの説明図で使用され、第2のソース内のビットのゼロ化は発生せず、対応するデスティネーション309に保存される。この例において、デスティネーション309の内容は命令が実行される前と同じである。
データ要素ポジション1において、第1のソース301は16進数形式で00000010の値を有する。これは10進表記法において16であり、第2のソース303のビットポジション16はゼロ化が開始してもよい点であることを示す。再度、ライトマスキングがこの説明図において使用されているが、今回はライトマスク305のこのビットポジションの値はゼロ化および書き込みが発生することを示す。このように、第2のソース303のデータはビットポジション16で開始するゼロ設定をされるであろうし、その新しい値はデスティネーション309のデータ要素ポジション1に格納されるであろう。
図示の例3Bにおいて、第1のソースレジスタ311からのデータ要素はデータ要素ごとに基づき第2のソースレジスタ/メモリロケーション313内の対応するデータ要素のビットのゼロ化のための開始点を提供する。この例において、第1および第2のソース311、313の両方はポジション0−3(右側の最下位)内に4つのデータ要素を有する。データ要素ポジション0において、第1のソース311は16進数形式で00000002の値を有する。これは10進数表記法において2であり、第2のソース313のビットポジション2はゼロ化が開始してもよい点であることを示す。しかしながら、このビットポジションにおけるライトマスク315の値のため、ライトマスキングがこの説明図で使用され、第2のソース内のビットのゼロ化は発生せず、対応するデスティネーション319に保存される。この例において、デスティネーション319の内容は完全にゼロ設定される。
データ要素ポジション1において、第1のソース311は16進数形式で00000010の値を有する。これは10進数表記法において16であり、第2のソース313のビットポジション16はゼロ化が開始してもよい点であることを示す。再度、ライトマスキングがこの説明図で使用されているが、今回はライトマスク315のこのビットポジションの値はゼロ化および書き込みが発生することを示す。このように、第2のソース313のデータはビットポジション16で開始するゼロ設定をされるであろうし、その新しい値はデスティネーション319のデータ要素ポジション1に格納されるであろう。
VPBZHIの例示的フォーマット
この命令の例示的フォーマットは「VPBZHI{K1}R1、R2/MEM、R3」であり、ここでデスティネーションオペランドK1はオプションのライトマスクレジスタであり、R1はパックドデータソースレジスタ(128、256、512ビットレジスタなどのような)であり、R2はパックドデータデスティネーションレジスタ(128、256、512ビットレジスタなどのような)またはメモリロケーションであり、およびR3はデスティネーションレジスタ(128、256、512ビットレジスタなどのような)であり、およびVPBZHIは命令のオペコードである。オペコードはまたソースのデータ要素のサイズを指定してもよい。例えば、VPBZHIDはデータ要素が32ビットであり、VPBZHIBが8ビットであることなどを示す。データ要素およびソースオペランドのサイズはまたライトマスクレジスタ内のアクティブビット数を決定する。
VPBZHIの実行の例示的方法
図4はプロセッサ内のVPBZHI命令の実行の実施形態を示す。第1および第2のソースオペランド、デスティネーションオペランド、オプションのライトマスクオペランド、オペコード付きのVPBZHI命令が401でフェッチされる。
VPBZHI命令は403でデコーディングロジックによりデコードされる。命令のフォーマットに応じて、様々なデータはデータ変換があるのか、どのレジスタに書き込むのかおよび/またはどのレジスタから取得されるのか、どのメモリアドレスにアクセスするのかなどのようにこのステージで解釈されてもよい。
ソースオペランドの値が405で取得される/読み出される。例えば、ソースベクトルレジスタが読み出される。ソースオペランドがメモリオペランドである場合、次にそのオペランドに関連付けられたデータ要素が取得される。いくつかの実施形態おいて、メモリからのデータ要素は一時レジスタに格納される。
VPBZHI命令(またはマイクロオペレーションなどの命令を備えるオペレーション)はそのビットポジションのデータ要素で開始する第2のソースオペランドの値をゼロ設定するために、第1のソースオペランドの各データ要素ポジションに対して、開始ビットポジションを決定するために407で1つまたは複数の機能ユニットのような実行リソースにより実行される。命令の実行はまた、第2のソースオペランドの対応するデータ要素ポジションの各々のための、第1のソース中の対応するデータ要素ポジション内で見つけ出された開始ビットポジションより大きい(より上位の)または等しいビットポジションであるビットのゼロ化を引き起こす。この例は図3Aおよび図3Bで見られる。いくつかの実施形態において、各データ要素ポジションが並列に評価される。他の実施形態において、データ要素ポジションが直列に評価される。
修正された第2のソースのデータ要素は409でデスティネーションの対応するデータ要素ポジションに書き込まれる。いくつかの実施形態において、ライトマスクが使用される際には、対応するデータ要素ポジションはそのビットポジションでライトマスクの値に応じて書き込まれなくてもよい。いくつかの実施形態において、ライトマスクがデータ要素ポジションは書き込まれるべきではないことを示す際には、デスティネーションのそのデータ要素ポジションはすべて0に設定される。他の実施形態において、ライトマスクがデータ要素ポジションは書き込まれるべきではないことを示す際には、デスティネーションのそのデータ要素ポジションは変更されない。407と409は別々に示されているが、いくつかの実施形態おいてそれらは命令の実行の一部として一緒に実行される。
いくつかの実施形態において、第2のソースのデータはデータ要素のいずれかの変更前にデスティネーションレジスタに格納される。例えば、ライトマスキングが使用されない場合、第2のソースからのデータ要素のすべてがデスティネーションに格納され次に変更される。ライトマスキングが使用される場合、選択されたデータ要素のみがライトマスクに従って移動される。
いくつかの実施形態において、一時的なストレージロケーションはゼロ化操作がその上で実行される際に第2のソースレジスタのデータが破壊されないように修正するために使用される。
図5はVPBZHI命令を処理するための方法の実施形態を示す。この実施形態において、すべてではない、操作401−405のいくつかは以前に実行されているが、しかしながら、それらは以下に提示する詳細を不明瞭にしないために示されていないものと想定される。例えば、フェッチおよびデコードは示されておらず、またオペランド取得も示されていない。この例において、各データ要素ポジションは並列に処理されるが、しかしながら、データ要素ポジションはまた直列に評価されてもよい。
501で、第1のソースの各データ要素ポジションに対して、第2のソースの対応するデータ要素ポジション内のデータ要素の(潜在的な)ゼロ化のための開始ビットポジションの決定がなされる。例えば、図3Aおよび図3Bにおいて、データ要素ポジション0でこの値が2であって、データ要素ポジション1において16であった。このように、潜在的なゼロ化のための開始ビットポジションは第2のソースの対応するデータ要素ポジションのデータ要素に対して2および16である。ゼロ化が発生してもよい間ではこの議論では潜在的に使用されるが、ライトマスクの使用に応じて、変更されたデータ要素がデスティネーションレジスタに格納されないであろうことが可能である。
第2のソースの各データ要素ポジションに対して、第2のソースの対応するデータ要素ポジション内のデータ要素の開始ビットポジションでのおよびより上位でのすべてのビットポジションは503でゼロ設定される。例えば、図3Aおよび図3Bにおいて、データ要素ポジション0でこの値のゼロ化はビット2で開始し、そのデータ要素の最上位ビットまで継続する。
各データ要素ポジションに対して、データ要素ポジションがライトマスクされる場合の決定は505で行われる。例えば、図3Aおよび図3Bにおいて、データ要素ポジション0でこの値は書き込みがないであろうことを示す。
ライトマスクによりブロックされている対象とならない第2のソースの値は507で対応する位置でデスティネーションに格納される。
いくつかの実施形態おいて、書き込まれなかったデスティネーションのすべてのデータ要素ポジションのデータ要素は509でゼロ設定される。
決定された開始ビットポジションで開始し上がっていくように説明されている上記の一方、他の変形例が考えられる。例えば、いくつかの実施形態において、動作は開始ビットポジションで開始し下がっていく。他の実施形態において、開始ビットポジションはゼロにされないが、次の行においてゼロにされる。
いくつかの実施形態において、第2のソースデータは503でデータ要素のいずれかの変更の前にデスティネーションレジスタに格納される。例えば、ライトマスキングが使用されない場合、第2のソースからのデータ要素のすべてがデスティネーションに格納され、次に修正される。ライトマスキングが使用される場合、選択されたデータ要素のみがライトマスクに従って移動される。
いくつかの実施形態において、一時的なストレージロケーションはゼロ化操作がその上で実行される際に第2のソースレジスタのデータが破壊されないように修正のために使用される。
例示的なレジスタアーキテクチャ
図6は本発明の一実施形態によるレジスタアーキテクチャ600のブロック図である。図示の実施形態において、512ビット幅である32個のベクトルレジスタ610があり、これらのレジスタはzmm0からzmm31と呼ばれる。下位16のzmmレジスタの下位256ビットはレジスタymm0−16上にオーバーレイされる。下位16のzmmレジスタの下位128ビット(ymmレジスタの下位128ビット)はレジスタxmm0−15上にオーバーレイされる。
図示の実施形態における汎用レジスタ625には、メモリオペランドをアドレスするための既存のx86アドレッシングモードと一緒に使用される16個の64ビット汎用レジスタがある。これらのレジスタはRAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、およびR8からR15の名前で呼ばれる。
図示の実施形態おけるMMXパックドインテジャ(整数)フラットレジスタファイル650にエイリアス(別名参照)されるスカラ浮動小数点スタックレジスタファイル(x87スタック)645では、MMXおよびXMMレジスタとの間で実行されるいくつかの操作のためのオペランドを保持するのと同様に、MMXレジスタが64ビットのパックド整数データに対する操作を実行するために使用される一方、x87スタックはx87命令セット拡張を使用して32/64/80ビット浮動小数点データのスカラ浮動小数点演算を実行するために使用される8要素のスタックである。
本発明の代替の実施形態はより広いまたはより狭いレジスタを使用してもよい。加えて、本発明の代替の実施形態はより多い、より少ない、または異なるレジスタファイルおよびレジスタを使用してもよい。
例示的なコアアーキテクチャ、プロセッサ、およびコンピュータアーキテクチャ
プロセッサコアは異なる目的のために、および異なるプロセッサ内で異なる方法で実装されてもよい。例えば、次のようなコアの実装を含んでいてもよい:1)汎用コンピューティングを対象とした汎用インオーダーコア;2)汎用コンピューティングを対象とした高性能汎用アウトオブオーダーコア;3)主にグラフィックスおよび/または科学(スループット)コンピューティングを対象とした専用コア。異なるプロセッサの実装は次のものを含んでいてもよい:1)汎用コンピューティングを対象とした1つまたは複数の汎用インオーダーコアおよび/または汎用コンピューティングを対象とした1つまたは複数の汎用アウトオブオーダーコアを含むCPU;および2)主にグラフィックスおよび/または科学(スループット)を対象とした1つまたは複数の専用コアを含むコプロセッサ。このような異なるプロセッサは、1)CPUから分離されたチップ上のコプロセッサ;2)CPUと同じパッケージ内の分離されたダイ上のコプロセッサ;3)CPUと同じダイ上のコプロセッサ(このような場合、そのようなコプロセッサは統合型グラフィックスおよび/または科学(スループット)ロジックなどのような専用ロジック、または専用コアと時には呼ばれる)、および4)説明してきたCPU(アプリケーションコアまたはアプリケーションプロセッサと時には呼ばれる)、上述したコプロセッサ、および追加機能を同じダイ上に含んでもよいシステムオンチップ、を含んでいてもよい異なるコンピュータシステムアーキテクチャをもたらす。例示的なコアアーキテクチャを次に説明し、続いて例示的なプロセッサおよびコンピュータアーキテクチャの説明をする。
例示的なコアアーキテクチャ
インオーダーおよびアウトオブオーダーコアブロック図
図7Aは本発明の実施形態による例示的なインオーダーパイプラインおよび例示的なレジスタリネーミング、アウトオブオーダー発行/実行パイプラインの両方を示すブロック図である。図7Bは本発明の実施形態によるプロセッサに含まれるインオーダーアーキテクチャコアの例示的な実施形態および例示的なレジスタリネーミング、アウトオブオーダー発行/実行アーキテクチャコアの両方を示すブロック図である。図7A−B中の破線ボックスのオプションの追加部はレジスタリネーミング、アウトオブオーダー発行/実行パイプラインおよびコアを示す一方、実線ボックスはインオーダーパイプラインおよびインオーダーコアを示す。インオーダーの態様がアウトオブオーダーの態様のサブセットであることを考え、アウトオブオーダーの態様が説明される。
図7Aにおいて、プロセッサパイプライン700はフェッチステージ702、長さデコーディングステージ704、デコードステージ706、アロケーションステージ708、リネーミングステージ710、スケジュール(またディスパッチまたは発行とも知られる)ステージ712、レジスタリード/メモリリードステージ714、実行ステージ716、ライトバック/メモリライトステージ718、例外処理ステージ722、およびコミットステージ724を含む。
図7Bは実行エンジンユニット750に結合されたフロントエンドユニット730を含むプロセッサコア790を示しており、両方がメモリユニット770に結合される。コア790は縮小命令セットコンピューティング(RISC)コア、複合命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コア、またはハイブリッドまたは代替のコアタイプであってもよい。さらに別のオプションとして、コア790は、例えばネットワークまたは通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィックスプロセッシングユニット(GPGPU)コア、グラフィックスコアなどのような専用コアであってもよい。
フロントエンドユニット730はデコードユニット740に結合された、命令フェッチユニット738に結合された、命令トランスレーションルックアサイドバッファ(TLB)736に結合された、命令キャッシュユニット734に結合された分岐予測ユニット732を含む。デコードユニット740(またはデコーダ)は命令をデコードし、元の命令からデコードされる、またはそうでなければ反映する、または由来する1つまたは複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、または他の制御信号を出力として生成してもよい。デコードユニット740は様々な異なるメカニズムを使用して実装してもよい。適切なメカニズムの例としては、これらに限定されないが、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ(PLA)、マイクロコード読み取り専用メモリ(ROM)、その他を含む。一実施形態において、コア790はマイクロコードROMまたは特定のマクロ命令のためのマイクロコードを格納した媒体(例えば、デコードユニット740内またはそうでなければフロントエンドユニット730内に)を含む。デコードユニット740は実行エンジンユニット750内でリネーム/アロケータユニット752に結合される。
実行エンジンユニット750はリタイアメントユニット754に結合されたリネーム/アロケータユニット752および1つまたは複数のスケジューラユニット756のセットを含む。スケジューラユニット756は、予約ステーション、中央命令ウィンドウ、その他などを含む異なるスケジューラの任意の数を表す。スケジューラユニット756は物理レジスタファイルユニット758に結合される。各物理レジスタファイルユニット758は1つまたは複数の物理レジスタファイル、例えばスカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス(例えば、次に実行する命令のアドレスである命令ポインタ)、その他などの1つまたは複数の異なるデータタイプを格納する中の異なるものを表す。一実施形態において、物理レジスタファイルユニット758はベクトルレジスタユニットおよびスカラレジスタユニットを備える。これらのレジスタユニットはアーキテクチャ的ベクトルレジスタ、ベクトルマスクレジスタ、および汎用レジスタを提供してもよい。物理レジスタファイルユニット758はレジスタリネーミングおよびアウトオブオーダー実行が実装されてもよい様々な方法を説明するためにリタイアメントユニット754によりオーバーラップされている(例えば、リオーダーバッファおよびリタイアメントレジスタファイルを使用して、フューチャーファイル、履歴(ヒストリー)バッファ、およびリタイアメントレジスタファイルを使用して、レジスタマップおよびレジスタのプールを使用して、その他など)。リタイアメントユニット754および物理レジスタファイルユニット758は実行クラスタ760に結合される。実行クラスタ760は1つまたは複数の実行ユニット762のセットおよび1つまたは複数のメモリアクセスユニット764のセットを含む。実行ユニット762は、様々なタイプのデータ(例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点)で様々な操作(例えば、シフト、加算、減算、乗算)を実行してもよい。いくつかの実施形態は特定の機能または機能のセットに専用の多数の実行ユニットを含んでいてもよい一方、他の実施形態は1つの実行ユニットのみまたはすべての機能をすべて実行する複数の実行ユニットを含んでいてもよい。スケジューラユニット756、物理レジスタファイルユニット758、および実行クラスタ760は、特定の実施形態では特定のタイプのデータ/操作のために別々のパイプラインを作成するため、おそらく複数のものとして示されている(例えば、スカラ整数パイプライン、スカラ浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、および/または各々が独自のスケジューラユニット、物理レジスタファイルユニット、および/または実行クラスタを有するメモリアクセスパイプライン−および別々のメモリアクセスパイプラインの場合には、特定の実施形態ではこのパイプラインの実行クラスタのみがメモリアクセスユニット764を有するように実装される。別々のパイプラインが使用される場合、1つまたは複数のこれらのパイプラインはアウトオブオーダー発行/実行でありおよび残りはインオーダーであってもよいことが理解されるべきである。
メモリアクセスユニット764のセットは、レベル2(L2)キャッシュユニット776に結合されたデータキャッシュユニット774に結合されたデータTLBユニット772を含むメモリユニット770に結合される。例示的な一実施形態において、メモリアクセスユニット764は、その各々がメモリユニット770内のデータTLBユニット772に結合されたロードユニット、ストアアドレスユニット、およびストアデータユニットを含んでいてもよい。命令キャッシュユニット734はメモリユニット770内のレベル2(L2)キャッシュユニット776にさらに結合される。L2キャッシュユニット776は1つまたは複数の他のレベルのキャッシュおよび最終的にはメインメモリに結合される。
一例として、例示的なレジスタリネーミング、アウトオブオーダー発行/実行コアアーキテクチャは以下のようにパイプライン700を実装してもよい:1)命令フェッチユニット738はフェッチおよび長さデコーディングステージ702および704を実行する;2)デコードユニット740はデコードステージ706を実行する;3)リネーム/アロケータユニット752はアロケーションステージ708およびリネーミングステージ710を実行する;4)スケジューラユニット756はスケジュールステージ712を実行する;5)物理レジスタファイルユニット758およびメモリユニット770はレジスタリード/メモリリードステージ714を実行する;実行クラスタ760は実行ステージ716を実行する;6)メモリユニット770および物理レジスタファイルユニット758はライトバック/メモリライトステージ718を実行する;7)様々なユニットは例外処理ステージ722に関与されてもよい;および8)リタイアメントユニット754および物理レジスタファイルユニット758はコミットステージ724を実行する。
コア790は本明細書に説明された命令を含む1つまたは複数の命令セット、(例えば、x86命令セット(新しいバージョンで追加されたいくつかの拡張命令を有する);カリフォルニア州サニーベールのMIPSテクノロジーズのMIPS命令セット;カリフォルニア州サニーベールのARMホールディングスのARM命令セット(NEONなどのようなオプションの追加拡張命令を有する))、をサポートしてもよい。一実施形態において、コア790はパックドデータ命令セット拡張をサポートするためのロジック(例えば、前述のAVX1、AVX2、および/またはジェネリックベクトルフレンドリ命令フォーマットのいくつかの形態(U=0および/またはU=1))を含み、それによってパックドデータを使用して実行される多くのマルチメディアアプリケーションにより使用される操作を可能にする。
コアがマルチスレッディング(2つまたはそれ以上の操作またはスレッドの並列のセットを実行すること)をサポートしていてもよく、およびタイムスライスドマルチスレッディング、同時マルチスレッディング(単一の物理コアが物理コアが同時にマルチスレッディングであるスレッドのそれぞれについて論理的なコアを提供する)、またはそれらの組み合わせ(例えば、タイムスライスドフェッチおよびデコードおよびその後はIntel(登録商標)ハイパースレッディングテクノロジーでのような同時マルチスレッディング)を含む様々な方法でそうしてもよいことを理解すべきである。
レジスタリネーミングはアウトオブオーダー実行のコンテキストで説明されている一方、レジスタリネーミングはインオーダーアーキテクチャで使用されてもよいことを理解すべきである。プロセッサの図示の実施形態はまた別々の命令およびデータキャッシュユニット734/774および共有L2キャッシュユニット776を含む一方、代替の実施形態は、例えばレベル1(L1)内部キャッシュ、または複数レベルの内部キャッシュなどのような命令およびデータの両方のための単一の内部キャッシュを有していてもよい。いくつかの実施形態において、システムは内部キャッシュおよびコアおよび/またはプロセッサの外部にある外部キャッシュとの組み合わせを含んでいてもよい。代替的に、キャッシュのすべてがコアおよび/またはプロセッサの外部にあってもよい。
具体的かつ例示的なインオーダーコアアーキテクチャ
図8A−Bはコアがチップ内のいくつかの論理ブロック(同じタイプおよび/または異なるタイプの他のコアを含む)の1つであるより具体的かつ例示的なインオーダーコアアーキテクチャのブロック図を示す。論理ブロックは高帯域幅の相互接続ネットワーク(例えば、リングネットワーク)を介して用途に応じていくつかの固定機能ロジック、メモリI/Oインターフェース、および他の必要なI/Oロジックと通信する。
図8Aは本発明の実施形態によるオンダイ相互接続ネットワーク802への接続およびレベル2(L2)キャッシュ804のローカルサブセットと一緒の単一のプロセッサコアのブロック図である。一実施形態において、命令デコーダ800はパックドデータ命令セット拡張を有するx86命令セットをサポートする。L1キャッシュ806はスカラおよびベクトルユニット内のキャッシュメモリへのローレイテンシー(低遅延)アクセスを可能とする。一実施形態において(デザインを単純化するために)、スカラユニット808およびベクトルユニット810は別々のレジスタセット(それぞれ、スカラレジスタ812およびベクトルレジスタ814)を使用し、それらの間で転送されるデータがメモリに書き込まれ、その後レベル1(L1)キャッシュ806からリードバックされる一方、本発明の代替の実施形態は異なるアプローチ(例えば、単一のレジスタセットを使用するか、または2つのレジスタファイル間で転送されるデータが書き込みおよびリードバックされないことを可能にする通信パスを含む)を使用してもよい。
L2キャッシュ804のローカルサブセットはプロセッサコアあたり1つの別々のローカルサブセットに分割されるグローバルL2キャッシュの一部である。各プロセッサコアはL2キャッシュ804の独自のローカルサブセットへの直接アクセスパスを有する。プロセッサコアにより読み取られたデータはL2キャッシュのサブセット804に格納され、他のプロセッサコアが自分自身のローカルL2キャッシュのサブセットへアクセスすることと並行して迅速にアクセスすることができる。プロセッサコアにより書き込まれたデータは独自のL2キャッシュサブセット804に格納され、必要に応じて他のサブセットからフラッシュされる。リングネットワークは共有データの一貫性を保証する。リングネットワークは、プロセッサコア、L2キャッシュおよび他の論理ブロックのようなエージェントをチップ内で相互に通信することを可能にするために双方向性である。各リングデータパスは方向ごとに1012ビット幅である。
図8Bは本発明の実施形態による図8A内のプロセッサコアの部分の拡大図である。図8BはL2キャッシュ804のL1データキャッシュ806A部分、並びにベクトルユニット810およびベクトルレジスタ814に関する詳細を含む。具体的には、ベクトルユニット810は、1つまたは複数の整数、単精度浮動小数点、倍精度浮動小数点命令を実行する、16幅のベクトル処理ユニット(VPU)(16幅のALU 828を参照)である。VPUはスウィズルユニット820でのレジスタの入力のスウィズリング(ベクトル要素の入れ替え)、数値変換ユニット822A−Bでの数値変換、およびメモリ入力上のレプリケーションユニット824でのレプリケーションをサポートする。
統合型メモリコントローラおよびグラフィックス付きプロセッサ
図9は本発明の実施形態による1つ以上のコアを有していてもよい、統合型メモリコントローラを有していてもよい、および統合型グラフィックスを有していてもよいプロセッサ900のブロック図である。図9の破線ボックスのオプション追加部が複数のコア902A−N、システムエージェントユニット910内の1つまたは複数の統合型メモリコントローラユニット914、および専用ロジック908のセットを有する代替プロセッサ900を示す一方、実線ボックスはシングルコア902A、システムエージェントユニット910、1つまたは複数のバスコントローラユニット916のセットを有するプロセッサ900を示す。
このように、プロセッサ900の異なる実装は:1)グラフィックスおよび/または科学(スループット)ロジック(1つまたは複数のコアを含んでいてもよい)を統合されている専用ロジック908を有するCPU、および1つまたは複数の汎用コア(例えば、汎用インオーダーコア、汎用アウトオブオーダーコア、その2つの組み合わせ)であるコア902A−N;2)主にグラフィックスおよび/または科学(スループット)を対象とした多数の専用コアであるコア902A−Nを有するコプロセッサ;および3)多数の汎用インオーダーコアであるコア902A−Nを有するコプロセッサを含んでいてもよい。このように、プロセッサ900は汎用プロセッサ、コプロセッサまたは例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU(汎用グラフィックスプロセッシングユニット)、高スループットの多くの統合型コア(MIC)コプロセッサ(30以上のコアを含む)、組込みプロセッサなどのような専用プロセッサであってもよい。プロセッサは1つまたは複数のチップ上に実装されてもよい。プロセッサ900は、例えば、BiCMOS、CMOS、またはNMOSなどのようないくつものプロセス技術のうちのいずれかを使用した1つまたは複数の基板の一部および/またはその上に実装されてもよい。
メモリ階層は、コア、セットまたは1つまたは複数の共有キャッシュユニット906、および統合型メモリコントローラユニット914のセットに結合された外部メモリ(図示せず)内のキャッシュの1つまたは複数のレベルを含む。共有キャッシュユニット906のセットはレベル2(L2)、レベル3(L3)、レベル4(L4)、またはキャッシュの他のレベル、最終レベルキャッシュ(LLC)、および/またはこれらの組み合わせなどのような1つまたは複数の中間レベルのキャッシュを含んでいてもよい。一実施形態おいてリングベースの相互接続ユニット912は統合型グラフィックスロジック908、共有キャッシュユニット906のセット、およびシステムエージェントユニット910/統合型メモリコントローラユニット914を相互接続する一方、代替実施形態ではこのようなユニットを相互接続するための任意の数の公知の技術を使用してもよい。一実施形態において、一貫性は1つまたは複数の共有キャッシュユニット906およびコア902A−Nとの間で維持される。
いくつかの実施形態おいては、コア902A−Nのうちの1つまたは複数はマルチスレッディングが可能である。システムエージェントユニット910はコア902A−Nの調整および操作をするこれらのコンポーネントを含む。システムエージェントユニット910は、例えばパワーコントロールユニット(PCU)およびディスプレイユニットを含んでいてもよい。PCUはコア902A−Nおよび統合型グラフィックスロジック908の電源状態を調整するために必要なロジックおよびコンポーネントを含んでいてもよい。ディスプレイユニットは1つまたは複数の外部接続されたディスプレイの駆動用である。
コア902A−Nはアーキテクチャ命令セットの面で均質または不均一であってもよく;すなわち、他のものはその命令セットまたは異なる命令セットのサブセットのみを実行可能であってもよい一方、2つまたはそれ以上のコア902A−Nは同じ命令セットを実行可能であってもよい。
例示的なコンピュータアーキテクチャ
図10−13は例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドPC、パーソナルデジタルアシスタント、エンジニアリングワークステーション、サーバ、ネットワーク機器、ネットワークハブ、スイッチ、組込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤ、ハンドヘルドデバイス、および様々な他の電子デバイスのための技術分野において知られている他のシステム設計および構成もまた適している。一般的に、本明細書に開示される膨大な種類の、プロセッサおよび/または他の実行ロジックを組み込むことが可能なシステムまたは電子デバイスは一般的に適している。
次に図10を参照すると、本発明の一実施形態によるシステム1000のブロック図が図示される。システム1000はコントローラハブ1020に結合された1つまたは複数のプロセッサ1010、1015を含んでいてもよい。一実施形態においてコントローラハブ1020はグラフィックスメモリコントローラハブ(GMCH)1090および入力/出力ハブ(IOH)1050(別々のチップ上にあってもよい)を含み;GMCH 1090はメモリ1040およびコプロセッサ1045に結合されたメモリおよびグラフィックスコントローラを含み;IOH 1050は入力/出力(I/O)デバイス1060をGMCH 1090に結合する。代替的に、メモリおよびグラフィックスコントローラの1つまたは両方がプロセッサ内に統合され(本明細書に記載されるように)、およびメモリ1040およびコプロセッサ1045がプロセッサ1010、およびIOH 1050を有する単一チップ内のコントローラハブ1020に直接結合される。
追加プロセッサ1015のオプションの特質は図10内の破線で示される。それぞれのプロセッサ1010、1015は本明細書に記載の1つまたは複数のプロセッシングコアを含んでいてもよく、プロセッサ900のいくつかのバージョンであってもよい。
メモリ1040は、例えばダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、またはこの2つの組み合わせであってもよい。少なくとも一つの実施形態の場合、コントローラハブ1020は、フロントサイドバス(FSB)、クイックパスインターコネクト(QPI)のようなポイントツーポイントインターフェース、または同様の接続1095などのようなマルチドロップバスを介して、プロセッサ1010、1015と通信する。
一実施形態おいて、コプロセッサ1045は、例えば、高スループットMICプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、組込みプロセッサなどのような専用プロセッサである。一実施形態において、コントローラハブ1020は統合型グラフィックスアクセラレータを含んでいてもよい。
物理リソース1010、1015との間にはアーキテクチャ的、マイクロアーキテクチャ的、熱、消費電力特性などを含むメリットのメトリクスのスペクトル(評価、尺度、測定法などの範囲)の観点から様々な違いがあり得る。
一実施形態において、プロセッサ1010は一般的なタイプのデータ処理操作を制御する命令を実行する。命令内に埋め込まれたコプロセッサ命令であってもよい。プロセッサ1010はこれらのコプロセッサ命令を接続コプロセッサ1045により実行されるべきであるタイプのものであるとして認識する。したがって、プロセッサ1010はコプロセッサ1045に対してコプロセッサバスまたは他のインターコネクト上にこれらのコプロセッサ命令(またはコプロセッサ命令を表す制御信号)を発行する。コプロセッサ1045はこれを受け取り、受け取ったコプロセッサ命令を実行する。
次に図11を参照すると、本発明の実施形態による第1のより具体的かつ例示的なシステム1100のブロック図が図示される。図11に示すように、マルチプロセッサシステム1100はポイントツーポイント相互接続システムであり、ポイントツーポイントインターフェース1150を介して結合された第1のプロセッサ1170および第2のプロセッサ1180を含む。プロセッサ1170および1180のそれぞれはプロセッサ900のいくつかのバージョンであってもよい。本発明の一実施形態において、コプロセッサ1138はコプロセッサ1045である一方、プロセッサ1170および1180はそれぞれプロセッサ1010および1015である。別の実施形態において、プロセッサ1170および1180はそれぞれプロセッサ1010およびコプロセッサ1045である。
プロセッサ1170および1180は統合型メモリコントローラ(IMC)ユニット1172および1182それぞれを含んで表示される。プロセッサ1170はまたそのバスコントローラユニットの一部としてポイントツーポイント(P−P)インターフェース回路1176および1178を含み;同様に、第2のプロセッサ1180は、P−Pインターフェース回路1186および1188を含む。プロセッサ1170、1180はP−Pインターフェース回路1178、1188を使用してポイントツーポイント(P−P)インターフェース1150を介して情報を交換してもよい。図11に示すように、IMC1172および1182はプロセッサを、それぞれのプロセッサにローカルに接続されたメインメモリの一部であってもよいそれぞれのメモリ、つまりメモリ1132およびメモリ1134に結合する。
プロセッサ1170、1180の各々はポイントツーポイントインターフェース回路1176、1194、1186、1198を使用して個々のP−Pインターフェース1152、1154を介してチップセット1190と情報交換をしてもよい。チップセット1190は高性能インターフェース1139を介してコプロセッサ1138とオプションで情報交換をしてもよい。一実施形態において、コプロセッサ1138は、例えば高スループットMICプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、組込みプロセッサなどのような専用プロセッサである。
共有キャッシュ(図示せず)はどちらかのプロセッサ内に含まれるかあるいは両方のプロセッサ外であってもよく、プロセッサが低電力モードに置かれる場合どちらかまたは両方のプロセッサのローカルキャッシュ情報が共有キャッシュ内に格納されてもよいように、P−P相互接続を介してまだプロセッサに接続される。
チップセット1190はインターフェース1196を介して第1のバス1116に結合されてもよい。一実施形態において、第1のバス1116は周辺機器相互接続(PCI)バス、またはPCI Expressバスまたは他の第三世代I/O相互接続バスなどのバスであってもよいが、本発明の範囲はこれに限定されない。
図11に示すように、様々なI/Oデバイス1114は、第1のバス1116を第2のバス1120に結合するバスブリッジ1118と共に、第1のバス1116に結合されてもよい。一実施形態において、コプロセッサ、高スループットのMICプロセッサ、GPGPU、アクセラレータ(例えば、グラフィックスアクセラレータまたはデジタル信号処理(DSP)ユニットなどのような)、フィールドプログラマブルゲートアレイ、または任意の他のプロセッサなどのような1つまたは複数の追加のプロセッサ1115は第1のバス1116に結合される。一実施形態において、第2のバス1120はローピンカウント(LPC)バスであってもよい。一実施形態において、様々なデバイスは、例えばキーボードおよび/またはマウス1122、通信デバイス1127および命令/コードおよびデータ1130を含んでいてもよいディスクドライブまたは他の大容量記憶デバイスなどのようなストレージユニット1128を含む第2のバス1120に結合されてもよい。さらに、オーディオI/O1124は第2のバス1120に結合されてもよい。他のアーキテクチャも可能であることに留意されたい。例えば、図11のポイントツーポイントアーキテクチャの代わりに、システムはマルチドロップバスまたは他のそのようなアーキテクチャを実装してもよい。
次に図12を参照すると、本発明の実施形態による第2のより具体的かつ例示的なシステム1200のブロック図が図示される。図11および12内の同様の要素は同様の参照符号の関係を有し、図11の特定の態様は図12の他の態様を不明瞭にするのを避けるために図12から省略されている。
図12はプロセッサ1170、1180が統合型メモリおよびI/O制御ロジック(「CL」)1172および1182をそれぞれ含んでいてもよいことを示す。このように、CL 1172、1182は統合型メモリコントローラユニットを含み、I/O制御ロジックを含む。図12はメモリ1132、1134がCL 1172、1182に結合されていることだけでなく、I/Oデバイス1214もまた制御ロジック1172、1182に結合されていることも示す。レガシーI/Oのデバイス1215はチップセット1190に結合される。
次に図13を参照すると、本発明の一実施形態によるSoC 1300のブロック図が図示される。図9内の同様の要素が同様の参照番号を付してある。また、破線のボックスはより高度なSoC上のオプション機能である。図13において、相互接続ユニット1302は:1つまたは複数のコア202A−Nおよび共有キャッシュユニット906のセットを含むアプリケーションプロセッサ1310;システムエージェントユニット910;バスコントローラユニット916;統合型メモリコントローラユニット914;統合型グラフィックスロジック、画像処理プロセッサ、オーディオプロセッサ、ビデオプロセッサを含んでいてもよいセットまたは1つまたは複数のコプロセッサ1320;スタティックランダムアクセスメモリ(SRAM)ユニット1330;ダイレクトメモリアクセス(DMA)ユニット1332;および1つまたは複数の外部ディスプレイを結合するためのディスプレイユニット1340に結合される。一実施形態において、コプロセッサ1320は、例えばネットワークまたは通信プロセッサ、圧縮エンジン、GPGPU、高スループットMICプロセッサ、組込みプロセッサなどのような専用プロセッサを含む。
本明細書に開示されたメカニズムの実施形態はハードウェア、ソフトウェア、ファームウェア、またはそのような実装アプローチの組み合わせで実装されてもよい。本発明の実施形態は、少なくとも1つのプロセッサ、ストレージシステム(揮発性および不揮発性メモリおよび/または記憶素子を含む)、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを備えるプログラム可能なシステム上で実行されるコンピュータプログラムまたはプログラムコードとして実装されてもよい。
図11に示されるコード1130などのようなプログラムコードは本明細書に説明された機能を実行し、出力情報を生成するために入力命令に適用されてもよい。出力情報は公知の方法で1つまたは複数の出力デバイスに適用されてもよい。本出願の目的のために、処理システムは、例えばデジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、またはマイクロプロセッサなどのようなプロセッサを有する任意のシステムを含む。
プログラムコードは処理システムと通信するために高レベル手続き型またはオブジェクト指向プログラミング言語で実装されてもよい。所望であれば、プログラムコードはまたアセンブリまたは機械言語で実装されてもよい。実際に、本明細書に説明されたメカニズムは特定のプログラミング言語の範囲に限定されない。いずれの場合においても、言語はコンパイルまたはインタープリタ型言語であってもよい。
少なくとも1つの実施形態の1つまたは複数の態様は、機械により読み出された際に機械に本明細書に説明された技術を実行するためのロジックを組み立てることを引き起こす、プロセッサ内の様々なロジックを表す機械可読媒体上に格納された代表的な命令により実装されてもよい。「IPコア」として知られているそのような表現は有形の機械可読媒体上に格納され、実際にロジックまたはプロセッサを作る製造機械にロードするために様々な顧客または製造施設に供給されてもよい。
このような機械可読記憶媒体は、これらに限定されないが、ハードディスクなど、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク読み取り専用メモリ(CD−ROM)、コンパクトディスクリライタブル(CD−RW)、および光磁気ディスクを含む任意の他のタイプ、読み取り専用メモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)などのランダムアクセスメモリ(RAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能プログラマブル読み取り専用メモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、相変化メモリ(PCM)、磁気または光カード、または電子命令を格納するのに適した媒体の任意の他のタイプなどの半導体デバイスなどの記憶媒体を含む、機械またはデバイスにより製造または形成された物品の非一時的な、有形の構成を含んでいてもよい。
したがって、本発明の実施形態はまた、本明細書に説明された命令を含む、または構造、回路、装置、プロセッサ、および/またはシステムの特徴を規定するハードウェア記述言語(HDL)などのような設計データを含む非一時的な、有形の機械可読媒体をも含む。このような実施形態はまたプログラムプロダクトと呼ばれることもある。
エミュレーション(バイナリトランスレーション、コードモーフィングなどを含む)
いくつかの場合において、命令コンバータは命令をソース命令セットからターゲット命令セットに変換するために使用されてもよい。例えば、命令コンバータは命令をコアにより処理される1つまたは複数の他の命令にトランスレート(例えば、静的なバイナリトランスレーション、動的コンパイルを含む動的バイナリトランスレーションを使用して)、モーフ(モーフィング)、エミュレート、またはそうでなければ変換してもよい。命令コンバータはソフトウェア、ハードウェア、ファームウェア、またはそれらの組み合わせで実現されてもよい。命令コンバータはプロセッサ上、プロセッサ外、または一部がプロセッサ上および一部がプロセッサ外であってもよい。
図14は本発明の実施形態によるソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するためのソフトウェア命令コンバータの使用を対比させたブロック図である。図示の実施形態において、代替的に命令コンバータはソフトウェア、ファームウェア、ハードウェア、またはそれらの様々な組み合わせで実装されてもよいが、命令コンバータはソフトウェア命令コンバータである。図14は少なくとも1つのx86命令セットのコア1416を有するプロセッサによりネイティブに実行されてもよいx86バイナリコード1406を生成させるためのx86コンパイラ1404を使用してコンパイルされてもよい高級言語1402でのプログラムを示す。少なくとも1つのx86命令セットコア1416を有するプロセッサは互換性のある実行またはそうでなければ、(1)Intel x86命令セットコアの命令セットの実質的な一部、または(2)少なくとも1つのx86命令セットコアを有するIntelプロセッサと実質的に同じ結果を達成するために、少なくとも1つのx86命令セットコアを有するIntelプロセッサ上で実行することを目標とするアプリケーションまたは他のソフトウェアのオブジェクトコードバージョンを処理することにより、少なくとも1つのx86命令セットコアを有するIntelプロセッサと実質的に同じ機能を実行することができる任意のプロセッサを表す。x86コンパイラ1404は、追加の連携処理を有してまたは有せずに、少なくとも1つのx86命令セットコア1416を有するプロセッサ上で実行されることができる、x86バイナリコード1406(例えば、オブジェクトコード)を生成するように動作可能であるコンパイラを表す。同様に、図14は、少なくとも1つのx86命令セットコア1414を有しないプロセッサ(例えば、カリフォルニア州サニーベールのMIPSテクノロジーズのMIPS命令セットを実行する、および/またはカリフォルニア州サニーベールのARMホールディングスのARM命令セットを実行するコアを有するプロセッサ)によりネイティブに実行されてもよい代替の命令セットバイナリコード1410を生成する代替の命令セットコンパイラ1408を使用してコンパイルされてもよい高級言語1402でのプログラムを示す。命令コンバータ1412はx86バイナリコード1406をx86命令セットコア1414を有しないプロセッサによりネイティブに実行されてもよいコードに変換するために使用される。この変換されたコードは、このことが可能な命令コンバータを作ることが困難であるため、代替の命令セットバイナリコード1410と同じでありそうではない;しかしながら、変換されたコードは一般的な動作を実現し、代替の命令セットからの命令で構成されることもできる。このように、命令コンバータ1412は、エミュレーション、シミュレーション、または他の任意のプロセスを介して、x86命令セットプロセッサまたはコアを有しないプロセッサまたは他の電子デバイスがx86バイナリコード1406を実行することを可能にするソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせを表す。

Claims (20)

  1. 指定されたビットポジションで開始するベクトルパックドゼロ上位ビット命令(VPBZHI命令)をデコードするデコードロジックであって、前記VPBZHI命令は第1および第2のソースオペランドおよびデスティネーションオペランドを含む、デコードロジックと、
    実行ロジックであって、
    前記第1のソースオペランドの各データ要素ポジションに関して、開始ビットポジションのデータ要素で始まる前記第2のソースオペランドの値をゼロ設定するための前記開始ビットポジションの決定と、
    前記第2のソースオペランドの各対応するデータ要素ポジションに関して、前記第1のソースオペランドの対応するデータ要素ポジションの前記開始ビットポジションよりも上位であるかまたは等しいビットポジションにあるビットのゼロ化と、
    任意のゼロ化後に対応するデータ要素ポジション内へ前記第2のソースオペランドの前記デスティネーションオペランドの値を格納することと、
    を引き起こすデコードされた前記VPBZHI命令を実行する実行ロジックと、
    を備える装置。
  2. 前記第1および第2のソースオペランド、並びに前記デスティネーションオペランドはパックドデータレジスタである、請求項1に記載の装置。
  3. 前記パックドデータレジスタのサイズは128ビット、256ビット、または512ビットである、請求項2に記載の装置。
  4. 前記命令はライトマスクオペランドをさらに含む、請求項1から3のいずれか1項に記載の装置。
  5. 前記デスティネーションレジスタ内のストレージは前記ライトマスクオペランドの値の対象である、請求項4に記載の装置。
  6. 前記ライトマスクオペランド内のアクティブビット数は前記第1および第2のソースオペランド内のデータ要素の数に等しい、請求項4または5に記載の装置。
  7. 前記第1のソースオペランドおよび前記デスティネーションオペランドはパックドデータレジスタであり、前記第2のソースオペランドはメモリロケーションである、請求項1から6のいずれか1項に記載の装置。
  8. コンピュータプロセッサ内で、指定されたビットポジションで開始するベクトルパックドゼロ上位ビット命令(VPBZHI命令)を実行する方法であって、
    前記VPBZHI命令は第1および第2のソースオペランドおよびデスティネーションオペランドを含み、
    前記第1のソースオペランドの各データ要素ポジションに関して、開始ビットポジションのデータ要素で始まる前記第2のソースオペランドの値をゼロ設定するための前記開始ビットポジションを決定する段階と、
    前記第2のソースオペランドの各対応するデータ要素ポジションに関して、前記第1のソースオペランドの対応するデータ要素ポジションの前記開始ビットポジションよりも上位であるかまたは等しいビットポジション内にあるビットをゼロ化する段階と、
    任意のゼロ化後に対応するデータ要素ポジション内へ前記第2のソースオペランドの前記デスティネーションオペランドの値を格納する段階と、
    を備える方法。
  9. 前記第1および第2ソースオペランド、並びに前記デスティネーションオペランドはパックドデータレジスタである、請求項8に記載の方法。
  10. 前記パックドデータレジスタのサイズは128ビット、256ビット、または512ビットである、請求項9に記載の方法。
  11. 前記命令はライトマスクオペランドをさらに含む、請求項8から10のいずれか1項に記載の方法。
  12. 前記デスティネーションレジスタ内のストレージは前記ライトマスクオペランドの値の対象である、請求項11に記載の方法。
  13. 前記ライトマスクオペランド内のアクティブビット数は前記第1および第2のソースオペランド内のデータ要素の数に等しい、請求項11または12に記載の方法。
  14. 前記第1のソースオペランドおよび前記デスティネーションオペランドはパックドデータレジスタであり、前記第2のソースオペランドはメモリロケーションである、請求項8から13のいずれか1項に記載の方法。
  15. 指定されたビットポジションで開始するベクトルパックドゼロ上位ビット命令(VPBZHI命令)を実行するための方法をプロセッサに実行させるためのプログラムであって、
    前記VPBZHI命令は第1および第2のソースオペランドおよびデスティネーションオペランドを含み、
    前記方法は、
    前記第1のソースオペランドの各データ要素ポジションに関して、開始ビットポジションのデータ要素で始まる前記第2のソースオペランドの値をゼロ設定するための前記開始ビットポジションを決定する段階と、
    前記第2のソースオペランドの各対応するデータ要素ポジションに関して、前記第1のソースオペランドの対応するデータ要素ポジションの前記開始ビットポジションよりも上位であるかまたは等しいビットポジション内にあるビットをゼロ化する段階と、
    任意のゼロ化後に対応するデータ要素ポジション内へ前記第2のソースオペランドの前記デスティネーションオペランドの値を格納する段階と、
    を備える、プログラム。
  16. 前記第1および第2のソースオペランド、並びに前記デスティネーションオペランドはパックドデータレジスタである、請求項15に記載のプログラム。
  17. 前記パックドデータレジスタのサイズは128ビット、256ビット、または512ビットである、請求項16に記載のプログラム。
  18. 前記命令はライトマスクオペランドをさらに含む、請求項17に記載のプログラム。
  19. 前記デスティネーションレジスタ内のストレージは前記ライトマスクオペランドの値の対象である、請求項18に記載のプログラム。
  20. 前記第1のソースオペランドおよび前記デスティネーションオペランドはパックドデータレジスタであり、前記第2のソースオペランドはメモリロケーションである、請求項15から19のいずれか1項に記載のプログラム。
JP2014032531A 2013-03-15 2014-02-24 データ要素内のビットをゼロ化するためのシステム、装置、および方法 Expired - Fee Related JP5753603B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/840,669 2013-03-15
US13/840,669 US9207942B2 (en) 2013-03-15 2013-03-15 Systems, apparatuses,and methods for zeroing of bits in a data element

Publications (2)

Publication Number Publication Date
JP2014182800A true JP2014182800A (ja) 2014-09-29
JP5753603B2 JP5753603B2 (ja) 2015-07-22

Family

ID=50634779

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014032531A Expired - Fee Related JP5753603B2 (ja) 2013-03-15 2014-02-24 データ要素内のビットをゼロ化するためのシステム、装置、および方法

Country Status (7)

Country Link
US (2) US9207942B2 (ja)
JP (1) JP5753603B2 (ja)
KR (1) KR101635856B1 (ja)
CN (1) CN104133660A (ja)
DE (1) DE102014003697A1 (ja)
GB (1) GB2514885B (ja)
IN (1) IN2014CH00953A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230027561A (ko) * 2021-08-19 2023-02-28 삼성전자주식회사 전자 장치 및 전자 장치의 메모리 제로화 방법

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS512771B1 (ja) * 1968-08-01 1976-01-28
JPS6188338A (ja) * 1984-07-09 1986-05-06 アドバンスト・マイクロ・デイバイシズ・インコ−ポレ−テツド 単一チツプの32ビツト拡張機能算術・論理ユニツト
JPS61103241A (ja) * 1984-10-27 1986-05-21 Nec Corp 情報処理装置
JPH02299082A (ja) * 1989-05-12 1990-12-11 Fujitsu Ltd 可変長データを処理するプロセッサ
JPH05100854A (ja) * 1990-05-02 1993-04-23 Motorola Inc Riscマイクロプロセツサおよび演算方法
JP2004013185A (ja) * 2002-06-03 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ
JP2006127460A (ja) * 2004-06-09 2006-05-18 Renesas Technology Corp 半導体装置、半導体信号処理装置、およびクロスバースイッチ
JP2011134304A (ja) * 2009-12-22 2011-07-07 Intel Corp ビット範囲分離命令、方法、および装置
US20120185670A1 (en) * 2011-01-14 2012-07-19 Toll Bret L Scalar integer instructions capable of execution with three registers
US20120254593A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for jumps using a mask register
WO2012134532A1 (en) * 2011-04-01 2012-10-04 Intel Corporation Vector friendly instruction format and execution thereof

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5268858A (en) * 1991-08-30 1993-12-07 Cyrix Corporation Method and apparatus for negating an operand
US5207132A (en) 1991-10-16 1993-05-04 Textron Inc. Elliptical lobed drive system
US5446912A (en) 1993-09-30 1995-08-29 Intel Corporation Partial width stalls within register alias table
US6128725A (en) * 1997-01-24 2000-10-03 Texas Instruments Incorporated Microprocessor with an instruction for setting or clearing a bit field
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US8417921B2 (en) * 2008-08-15 2013-04-09 Apple Inc. Running-min and running-max instructions for processing vectors using a base value from a key element of an input vector
US20120078597A1 (en) * 2010-09-27 2012-03-29 Infosys Technologies Limited Mobile device with a modeling platform
US9411592B2 (en) * 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count functionality

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS512771B1 (ja) * 1968-08-01 1976-01-28
JPS6188338A (ja) * 1984-07-09 1986-05-06 アドバンスト・マイクロ・デイバイシズ・インコ−ポレ−テツド 単一チツプの32ビツト拡張機能算術・論理ユニツト
US4785393A (en) * 1984-07-09 1988-11-15 Advanced Micro Devices, Inc. 32-Bit extended function arithmetic-logic unit on a single chip
JPS61103241A (ja) * 1984-10-27 1986-05-21 Nec Corp 情報処理装置
JPH02299082A (ja) * 1989-05-12 1990-12-11 Fujitsu Ltd 可変長データを処理するプロセッサ
JPH05100854A (ja) * 1990-05-02 1993-04-23 Motorola Inc Riscマイクロプロセツサおよび演算方法
JP2004013185A (ja) * 2002-06-03 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ
JP2006127460A (ja) * 2004-06-09 2006-05-18 Renesas Technology Corp 半導体装置、半導体信号処理装置、およびクロスバースイッチ
JP2011134304A (ja) * 2009-12-22 2011-07-07 Intel Corp ビット範囲分離命令、方法、および装置
US20120185670A1 (en) * 2011-01-14 2012-07-19 Toll Bret L Scalar integer instructions capable of execution with three registers
US20120254593A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for jumps using a mask register
WO2012134532A1 (en) * 2011-04-01 2012-10-04 Intel Corporation Vector friendly instruction format and execution thereof

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6014051281; Freescale Semiconductor, Inc.: 'AltiVec Technology Programming Environments Manual ALTIVECPEM Rev.3' [online] , 200604, Pages:6-135, 6-137, 6-139, 6-151, www.freescale.com *

Also Published As

Publication number Publication date
US20140281400A1 (en) 2014-09-18
KR20140113579A (ko) 2014-09-24
US9207942B2 (en) 2015-12-08
DE102014003697A1 (de) 2014-09-18
KR101635856B1 (ko) 2016-07-05
JP5753603B2 (ja) 2015-07-22
US20160092226A1 (en) 2016-03-31
IN2014CH00953A (ja) 2015-05-08
GB201404575D0 (en) 2014-04-30
GB2514885B (en) 2015-10-28
GB2514885A (en) 2014-12-10
CN104133660A (zh) 2014-11-05

Similar Documents

Publication Publication Date Title
JP6351682B2 (ja) 装置および方法
JP6207095B2 (ja) 条件付きループをベクトル化する命令及び論理
JP6466388B2 (ja) 方法及び装置
CN107918546B (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
US10387148B2 (en) Apparatus and method to reverse and permute bits in a mask register
JP2018504667A (ja) ベクトルパックドタプル相互比較機能を提供する方法、装置、命令、およびロジック
JP2017509064A (ja) マスクド結果要素に伝搬する対応アンマスクド結果要素にソース要素を記憶するプロセッサ、方法、システム、及び命令
JP2014182796A (ja) 書き込みマスク・レジスタの末尾の最下位マスキング・ビットを判定するためのシステム、装置、および方法
EP2889755A2 (en) Systems, apparatuses, and methods for expand and compress
JP2017534982A (ja) 4d座標から4dのz曲線インデックスを計算するための機械レベル命令
US10545757B2 (en) Instruction for determining equality of all packed data elements in a source operand
JP5798650B2 (ja) 短整数の乗算の数を減らすためのシステム、装置、および方法
JP5753603B2 (ja) データ要素内のビットをゼロ化するためのシステム、装置、および方法
EP2889756A1 (en) Systems, apparatuses, and methods for vector bit test

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150309

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: 20150324

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150422

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150522

R150 Certificate of patent or registration of utility model

Ref document number: 5753603

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

LAPS Cancellation because of no payment of annual fees