JP6253706B2 - ハードウェア装置 - Google Patents

ハードウェア装置 Download PDF

Info

Publication number
JP6253706B2
JP6253706B2 JP2016096457A JP2016096457A JP6253706B2 JP 6253706 B2 JP6253706 B2 JP 6253706B2 JP 2016096457 A JP2016096457 A JP 2016096457A JP 2016096457 A JP2016096457 A JP 2016096457A JP 6253706 B2 JP6253706 B2 JP 6253706B2
Authority
JP
Japan
Prior art keywords
instruction
status
register
hardware device
hardware
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.)
Expired - Fee Related
Application number
JP2016096457A
Other languages
English (en)
Other versions
JP2017016640A (ja
Inventor
ジー. マトヴェイェフ、パヴェル
ジー. マトヴェイェフ、パヴェル
エム. マスレニコフ、ドミトリー
エム. マスレニコフ、ドミトリー
カプリオリ、ポール
ヘイバー、ガディ
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 JP2017016640A publication Critical patent/JP2017016640A/ja
Application granted granted Critical
Publication of JP6253706B2 publication Critical patent/JP6253706B2/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
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30101Special purpose registers
    • 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

Landscapes

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

Description

本明細書において説明される様々な実施形態は、プロセッサアーキテクチャに関する。
大半のアーキテクチャにおいて、RFLAGSのような、演算の複数のステータスフラグを指すアーキテクチャレジスタは、1つだけ存在する。このことは、より大きな性能及び/又はエネルギ効率性のために複数の命令をリオーダするコンパイラ又はバイナリトランスレータの能力を制限する。
本発明は、例として示されるものであって、複数の添付図面の複数の図において限定されるものではなく、ここで、同様の参照符号は、同様の要素を示す。
ハードウェアプロセッサ(又はプロセッサコア)内の複数のレジスタの実施形態を示す。 複数のステータス消費命令の命令フォーマットの例示的な複数の実施形態を示す。 プロセッサにおけるステータス消費命令の実行方法の実施形態を示す。 複数のステータス書き込み命令の命令フォーマットの例示的な複数の実施形態を示す。 プロセッサにおけるステータス書き込み命令の実行方法の実施形態を示す。 本発明の複数の実施形態に係る例示的なインオーダパイプライン及び例示的なレジスタリネーミング、アウトオブオーダ発行/実行パイプラインの両方を示すブロック図である。 本発明の複数の実施形態に係るプロセッサに含まれるべきインオーダアーキテクチャコアの例示的な実施形態及び例示的なレジスタリネーミング、アウトオブオーダ発行/実行アーキテクチャコアの両方を示すブロック図である。 より詳細な、例示的なインオーダコアアーキテクチャのブロック図を示し、ここで、コアは、チップ内のいくつかの論理ブロック(同じタイプ及び/又は異なるタイプの複数の他のコアを含む)の中の1つたり得る。 より詳細な、例示的なインオーダコアアーキテクチャのブロック図を示し、ここで、コアは、チップ内のいくつかの論理ブロック(同じタイプ及び/又は異なるタイプの複数の他のコアを含む)の中の1つたり得る。 本発明の複数の実施形態に係る、1つより多くのコアを有してよく、集積メモリコントローラを有してよく、集積グラフィクスを有してよい、プロセッサ800のブロック図である。 例示的なコンピュータアーキテクチャのブロック図である。 例示的なコンピュータアーキテクチャのブロック図である。 例示的なコンピュータアーキテクチャのブロック図である。 例示的なコンピュータアーキテクチャのブロック図である。 本発明の複数の実施形態に係る、ソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するためのソフトウェア命令コンバータの使用を対比させるブロック図である。
以下の説明において、多数の具体的な詳細が示される。しかしながら、本発明の複数の実施形態は、これらの具体的な詳細を伴うことなく実施可能であることが理解される。本明細書における「一実施形態」、「実施形態」、「例示的な実施形態」等の記載は、説明される実施形態が、特定の機能、構造、又は特性を含んでよいが、各実施形態が当該特定の機能、構造、又は特性を必ずしも含むものではないことを示す。さらに、このような語句は、必ずしも同じ実施形態を参照するものではない。さらに、特定の機能、構造、又は特性が実施形態に関連して説明される場合、これらは、明記されているか否かに関わらず、複数の他の実施形態に関連して、このような機能、構造、又は特性に影響を与えることは、当業者の知識の範囲内であるものと考えられる。
単一のフラグ(条件コードレジスタ)のみを有することに対する1つの解決手段は、各(潜在的に行われる)フラグ生成演算の2つのバリアントを提供することである。例えば、ROR命令は、右回転し、かつ、キャリーフラグを更新するが、RORXは、いずれのフラグにも影響することなく右回転する。これにより、何らかのコンパイラベースのリオーダが、特に、その複数のフラグ結果が消費されないためにそれらの抑制が不可能な複数の命令について、可能となる。
他の解決手段は、複数のアーキテクチャフラグレジスタを提供することである。例えば、RFLAGS0、RFLAGS1、RFLAGS2、及びRFLAGS3が想像できよう。プロデューサ及びコンシューマ命令の両方は、次に、彼らがどのフラグレジスタを参照することを望むかを(2ビットで)指定することができる。これは、2ビットをプロデューサ毎、すなわちほぼ演算命令毎に、かつコンシューマ(例えば、条件付き分岐、条件付き移動)毎に、追加することを必要とする。さらに、アウトオブオーダプロセッサにおいては、これら4つのフラグレジスタは、リネーミングされなければならない。
図1は、ハードウェアプロセッサ(又はプロセッサコア)内の複数のレジスタの実施形態を示す。本実施形態において、プロセッサ状態についてのステータス情報を格納するステータスレジスタ101が存在する。このレジスタは、限定されるものではないが、(FLAGFS、EFLAGS、又はRFLAGSのような)FLAGSレジスタ、プログラムステータスワード(PSW)、条件コード(CC)レジスタ等を含む多数の異なる名称を有してよい。ステータスレジスタに格納される複数のステータスビット(又はフラグ)の例は、限定されるものではないが、キャリー(C)、パリティ(P)、アジャスト(A)、ゼロ(Z)、サイン(S)、及びオーバーフロー(O)のインジケーションを含む。ステータスレジスタを通して、命令は、複数のステータスビットのうち1つ又は複数を評価することによって、前の命令の結果に基づいてアクションを起こしてよい。命令の実行は、命令自体の複数の結果に基づいて、ステータスレジスタ701の複数のステータスビットをセットする。例えば、Cフラグのような、ステータスレジスタの特定の複数のビット(フラグ)のみがいくつかの回転命令にセットされ、A、Z、S、及びPは影響されない。
複数の物理データレジスタ1 103からN109も存在する。いくつかの実施形態において、物理データレジスタ103、109の数は、プログラマにとってアーキテクチャ的に可視なものより多い。これらの実施形態において、複数の物理レジスタは、命令実行パイプラインの一部をリネーミングする間に、アーキテクチャレジスタに割り当てられる。
データレジスタのデータ部分107及び113のサイズは、実装に応じて異なる。例えば、データ部分は、8ビット、16ビット、32ビット、64ビット、128ビット、256ビット、512ビット、1,024ビット等であってよい。データ部分は、整数、浮動小数点、又はパック(整数もしくは浮動小数点)データ値を格納するために用いられてもよい。
ステータスをプロセッサ、例えばアウトオブオーダプロセッサに実装する態様は、各物理データレジスタ103及び109を、演算のステータスフラグ結果(C、O、S、P、A、及びZ)を含むように拡張する。例えば、64ビットデータレジスタに対し、この拡張は、物理的な70ビットレジスタをもたらすことができる。より大きいレジスタは、データ部分107及び113に付属するフラグ105及び111として示され、これにより、これらは、演算結果と物理的に同じ位置にある。プロセッサ内のリネーミングハードウェアは、アーキテクチャレジスタが物理レジスタにリネーミングするのと同じ態様で、物理レジスタにリネーミングする。このように、データレジスタは、物理レジスタの第1の64ビットを指し、ステータスは、物理レジスタのフラグ部分を指す。これらのレジスタは、リトルエンディアンフォーマット(データが最下位ビットにあり、ステータスビットが最上位ビットに格納される)で示され、複数の他の実施形態において、データ及びステータスビットのストレージは、反対の態様で格納される。
以下の従来技術の例を検討する。「sub rax,$7」という命令により7がRAXから減算される場合、アーキテクチャレジスタRAXに対する結果の値は、フラグ結果と共に物理レジスタ(例えばP39)に書き込まれる。このように、RAXレジスタ及びステータスレジスタの両方は、ここで、物理レジスタP39を指す。次に、ここで、「add rbx,$3」という命令が、その結果を物理レジスタP40に書き込む。ここで、RBXレジスタ及びステータスレジスタの両方は、物理レジスタP40を指す。RAXレジスタは、さらに物理レジスタP39を指す。残念ながら、減算命令のフラグ結果は、P39においてハードウェアにさらに存在するが、ソフトウェアにはこれにアクセスする方法が現在存在しない。
(条件付き分岐のような)複数の新たなステータス消費命令、及び、望ましいステータスの結果と同時に生成される結果を保持するアーキテクチャレジスタを当該複数の命令に参照させることによって、これらが消費するステータスビットのソースとしてどの物理レジスタが機能すべきかを指定する、当該複数の命令の実行の複数の実施形態が、以下、詳述される。これは、次の命令がステータスレジスタを上書きしたか否かに関わらず、次の命令によって特定のアーキテクチャレジスタがまだ上書きされていない限り、実行可能である。例えば、ステータスレジスタが上書きされる場合でさえ、物理データレジスタによって格納されるステータスビットは、条件付き決定を行うために用いられる。勿論、複数の既存の命令は、何ら変更を加えることなく、ステータスレジスタを継続して用いてよい。
いくつかの実施形態において、複数のステータス消費命令は、条件が指す演算の複数の結果(ステータス情報)をどのアーキテクチャレジスタが保持するかを示すべく、それらのエンコードにおいてレジスタフィールドを有する。例えば、新たな命令「jne rcx.f,L2」は、RCXの整数値を生成した同じ命令によって生成された複数のフラグに対する「不等」テストを評価する(「.f」は、複数のフラグが格納されていることを示す)。例示のアセンブリ言語規定として、物理レジスタの整数結果は、アーキテクチャ的にRCXによって「RCX」として参照され、同じ物理レジスタのフラグ結果は、「RCX.F」として参照される。なお、ソフトウェアは、ここで、比較的低いハードウェアコストで、アーキテクチャ整数レジスタと同数のフラグ結果レジスタへのアクセスを有する。勿論、いくつかの実施形態において、このフラグ結果の特徴は、複数の利用可能なアーキテクチャレジスタのサブセットに限定される。
なお、分岐及び/又はジャンプ以外に、複数の条件付き命令も提供されてよい。例えば、条件付き移動及び条件付きメモリオペレーションは、(ステータスレジスタに加えて)RCX.Fから複数のフラグを消費するように指定されてよい。
図2は、複数のステータス消費命令の命令フォーマットの例示的な複数の実施形態を示す。ステータス書き込み命令の第1のタイプ201は、命令の実行が、オペレーションが実行されるべきか否かを決定するソースオペランド207の少なくとも1つのステータスビットを評価するものであることを示すオペコード203を含む。例えば、ソース207からデスティネーション205への条件付き移動は、セットされた複数のステータスビットのうち1つ又は複数に基づいて実行されなければならない。
ステータス書き込み命令の第2のタイプ211は、オペレーションが実行されるべきであることを示すステータス消費命令に対するオペコード213を含む。ソースオペランド217は、それがステータス情報を格納することのインジケーションを含む。例えば、source.fは、当該ソースが消費されるべきステータスデータを含むことを示すために用いられてよい。デスティネーション215は、オペレーションのデスティネーションである。
ステータス書き込み命令の第3のタイプ221は、命令の実行が、オペレーションが実行されるべきか否かを決定する明示フラグ位置(ソースオペランド)223の少なくとも1つのステータスビットを評価するものであることを示すオペコード223を含む。例えば、オフセット225への条件付きジャンプは、セットされた複数のステータスビットのうち1つ又は複数に基づいて実行されなければならない。
ステータス書き込み命令の第4のタイプ231は、命令の実行が、オペレーションが実行されるべきか否かを決定する少なくとも1つのステータスビットを評価するものであることを示すオペコード233を含む。明示フラグ位置(ソースオペランド)233は、それがデータに加えてステータス情報を格納することを示す。例えば、source.fは、ソースが消費されるべきステータスデータを含むことを示すために用いられてよい。例えば、オフセット235への条件付きジャンプは、セットされた複数のステータスビットのうち1つ又は複数に基づいて実行されなければならない。
図3は、プロセッサにおけるステータス消費命令の実行方法の実施形態を示す。例示的なパイプライン及びプロセッサ(又はコア)が、複数の後述される図において詳述される。さらに、複数のステータス消費命令の例示的な命令フォーマットが、詳細に上述されている。
ステータス消費命令は、301において、フェッチハードウェアによってフェッチされる。典型的には、複数の命令は、フェッチ前に命令キャッシュに格納される。
フェッチされた命令は、303において、デコードハードウェアによってデコードされる。命令のデコードは、どの命令が実行されるべきか、及びフェッチする複数のオペランドを決定する。いくつかの実施形態において、命令は、マイクロオペレーションにデコードされる。
いくつかの実施形態において、レジスタリネーミングは、305において、リネーミング/配分ハードウェアによって、命令の複数のオペランドのうち1つ又は複数において実行される。例えば、ソースオペランドは、アーキテクチャレジスタから物理レジスタにマッピングされる。複数のソースオペランド値は、307において、物理レジスタファイル又はメモリから取得される。
デコードされたステータス消費命令は、309において、取得されたソースオペランドにおいて、機能ユニット(実行ハードウェア)によって実行される。例えば、ジャンプノットゼロ(JNZ)が実行される。デコードされたステータス消費命令の実行は、取得されたソースからのステータス情報を見ることによって、ステータス条件が満たされているか否かを決定させる。JNZの例において、ジャンプは、(ゼロフラグのような)ゼロステータスがソースオペランドのステータス部分にセットされない場合に実行される。
上述の図はハードウェアについて説明されたが、方法の複数の態様のうち1つ又は複数は、例えばエミュレートの一部として、ソフトウェアで実行されてよい。例えば、デコーダは、ハードウェアではなくソフトウェア又はファームウェアで実装されてよい。
複数の新たなステータス書き込み命令、及び、複数のステータス結果と同時に生成された結果を保持するアーキテクチャレジスタを当該複数の命令に参照させることによって、どの物理レジスタがステータス情報のデスティネーションとして機能すべきかを指定する、当該複数の命令の実行の複数の実施形態が、以下、詳述される。
図4は、複数のステータス書き込み命令の命令フォーマットの例示的な複数の実施形態を示す。ステータス書き込み命令の第1のタイプ401は、命令の実行が、デスティネーションオペランド405に関連付けられた単一のデスティネーション物理格納位置に、少なくとも1つのステータスビットを結果と共に格納させるものであることを示すオペコード403を含む。ステータス書き込み命令401の第1のタイプは、典型的には、少なくとも1つのソースオペランド407をさらに含む。このような命令の例は、SUB.F DST、SRCであり、SUB.Fのオペコードは、このタイプの命令が通常の減算命令と異なり、ステータス情報をデスティネーション(DST)に格納するものであることを示す。
ステータス書き込み命令の第2のタイプ411は、命令のオペコード413と、命令の結果及びそのステータス情報が単一のデスティネーション物理位置に格納されるべきであることを示すデスティネーションオペランド415とを含む。ステータス書き込み命令411の第2のタイプは、典型的には、少なくとも1つのソースオペランド417をさらに含む。このような命令の例は、SUB DST.F、SRCであり、DST.Fのデスティネーションは、このタイプの命令が、通常の減算と異なり、ステータス情報をデスティネーション(DST)に格納するものであることを示す。
ステータス書き込み命令の第3のタイプ421は、命令のオペコード423及びデスティネーションオペランド425を含む。このタイプのステータス書き込み命令は、ステータス情報が、結果と共に単一のデスティネーション物理位置に格納されるべきではないことを示すものではない。ステータス書き込み命令411の第3のタイプは、典型的には、少なくとも1つのソースオペランド417をさらに含む。このような命令の例は、SUB DST、SRCである。非ステータス書き込み命令の複数のバリアントは、命令の実行が複数のアクセス可能なステータスビットを提供するものではないことを記述するSUBXのような異なるオペコードを有してよい。このように、本明細書において詳述される複数の実施形態は、フラグ生成及びフラグ抑制を行う複数の命令の変形の両方を含む命令セットアーキテクチャと相反するものではない。例えば、SUB命令はステータスレジスタを書き込み、SUBX命令は書き込まない。本明細書において詳述される複数の実施形態において、両方の命令バリアントは、整数結果及びフラグ結果の両方を、デスティネーション物理レジスタに書き込む。しかしながら、SUBバリアントのみが、命令のデスティネーション位置を指すようにステータスレジスタをリネーミングする。上述の例において、SUBは、SUBXによって置換されてよく、(JNEのような)消費命令は、RCX.Fをさらに消費してよい。SUB及びSUBXの両方は、ここで、デスティネーションとして物理レジスタP39を配分してよい。この両方とも、減算の整数結果をP39に書き込んでよく、この両方とも、減算のフラグ結果をP39に書き込んでよい。この両方とも、アーキテクチャレジスタRCXをP39にリネーミングしてよい。しかし、SUBのみが、ステータスレジスタをP39にリネーミングしてよい。RCXが次に、他の命令によってリネーミングされるまで、新たな条件付き分岐は、RCX.Fを消費してよい。
図5は、プロセッサにおけるステータス書き込み命令の実行方法の実施形態を示す。例示的なパイプライン及びプロセッサ(又はコア)が、複数の後述される図において詳述される。さらに、複数のステータス書き込み命令の例示的な命令フォーマットが、詳細に上述されている。
ステータス書き込み命令は、501において、フェッチハードウェアによってフェッチされる。典型的には、複数の命令は、フェッチ前に命令キャッシュに格納される。
フェッチされた命令は、503において、デコードハードウェアによってデコードされる。命令のデコードは、どの命令が実行されるべきか、及びフェッチする複数のオペランドを決定する。いくつかの実施形態において、命令は、マイクロオペレーションにデコードされる。
いくつかの実施形態において、レジスタリネーミングは、505において、リネーミング/配分ハードウェアによって、命令の複数のオペランドのうち1つ又は複数において実行される。例えば、デスティネーションオペランドは、アーキテクチャレジスタから物理レジスタにマッピングされる。複数のソースオペランド値は、507において、物理レジスタファイル又はメモリから取得される。
デコードされたステータス書き込み命令は、509において、取得されたソースオペランドにおいて、機能ユニット(実行ハードウェア)によって実行される。例えば、減算が実行される。デコードされたステータス書き込み命令の実行は、結果を演算させ、(詳細に上述されたように、C、O、S、P、A、及びZのような)ステータス情報を生成させる。
(リタイアメントハードウェアのような)ライトバックハードウェアは、511において、デコードされたステータス書き込み命令の実行結果及びステータス情報を、単一のデスティネーションレジスタに格納する。リネーミングを用いるプロセッサ(コア)において、レジスタは、アーキテクチャ的バージョンから物理的バージョンにマッピングされる。さらに、(FLAGSレジスタのような)ステータス情報は、ステータス及びデータの両方を有する物理レジスタにマッピングされる。
上述の図はハードウェアについて説明されたが、方法の複数の態様のうち1つ又は複数は、例えばエミュレートの一部として、ソフトウェアで実行されてよい。例えば、デコーダは、ハードウェアではなくソフトウェア又はファームウェアで実装されてよい。
本明細書において詳述される事項は、ソフトウェアが既に隠されたハードウェアの物理状態にアクセスすることを可能とすることによって、プログラムのアーキテクチャ状態を増加させる。これは、内容をスイッチすることの示唆を含み、通常の態様で処理されてよい。例えば、追加の状態は、例えばXSAVEを用いて、オペレーティングシステムによって保存及び復元されてよい。代わりに、この機能は、複数のトランザクション領域内(例えば、XBEGIN及びXEND間の複数の領域)のみにおいて利用されてよく、これにより、追加のアーキテクチャ状態は、アトミックな態様で生成及び消費の両方がなされる。又は、新たなアーキテクチャ状態は、複数のトラップ及び割り込みがランタイム管理ソフトウェア又はファームウェア層によって妨害される動的バイナリ変換を介して生成されたコードに限定されるなど、ランタイムソフトウェアによって管理されてよい。
上述された複数の命令は、多数の利点を提供する。典型的には、ステータスレジスタの複数のフラグ(キャリー、オーバーフロー、サイン、ゼロ等)に対して、単一のアーキテクチャ値のみが存在する。ゆえに、多くの場合、コンパイラ又はバイナリトランスレータが、フラグ演算をループの上、及びその外に配置することは不可能である。以下の例を検討する。
Figure 0006253706
疑似アセンブリにおいて、これは、以下のようになる。
Figure 0006253706
特に、RAX及びRBXの比較はループ内で行われるため、これは、常に同じ結果を生成するにも関わらず、1000回実行されることに留意されたい。その複数のステータス(フラグ)結果は、後続の必要なループインデックス比較によって上書きされる。両方の比較命令は、次の複数のコンシューマ(条件付き分岐)に必要とされる複数のフラグを生成する。
ここで、デスティネーションステータス書き込み及び消費命令を用いて、上述の例は、以下のようにコンパイル(又はバイナリ変換)されてよい。
Figure 0006253706
Figure 0006253706
RAXのRBXとの比較は、ループの上に移されている。RCX.F(ステータス情報を有するデスティネーションレジスタ)の値は、一度算出され、1000回用いられる。コンパイラは、ループ内で実行されるいずれの命令のデスティネーションとしても、整数レジスタRCXを用いておらず(かつ、用いなくてよく)、これは、そのように用いることによってRCX.F及びRCXが上書きされ得るからである。
なお、上述のコードは、まだ最適ではない。ループの上に比較を移動させることによって、上述された他の条件付き分岐(JNE)にジャンプする最後の条件付き分岐(JL)を回避することのような、さらなる最適化が可能となる。従って、以下のようになる。
Figure 0006253706
上述のRCX.Fを生成する命令は、3つのオペランド(非破壊的ソース)命令として書き込まれることがあり、これにより、ソース(RAX及びRBX)は上書きされない。これは、本発明の複数の実施形態に直交(orthogonal)する。上述された単一の減算は、複数の非破壊的ソース命令が所与の命令セットアーキテクチャ(ISA)において利用可能でない場合には、「mov rcx, rax; sub rcx, rbx;」と置換されてよい。
上述された加算、減算、及び比較は全て、ステータスレジスタを更新する。上述された条件付きジャンプJGEも、ステータスレジスタの複数のステータスフラグによって決定される条件を指す。
本明細書において詳述される複数の実施形態は、以下詳述されるものを含む多数の異なるアーキテクチャで実行されてよい。
例示的なコアアーキテクチャ、プロセッサ、及びコンピュータアーキテクチャ
複数のプロセッサコアは、複数の異なる態様で、複数の異なる目的のために、複数の異なるプロセッサにおいて実装されてよい。例えば、このような複数のコアの実装は、1)汎用演算向けの汎用インオーダコア、2)汎用演算向けの高性能汎用アウトオブオーダコア、3)主にグラフィクス及び/又は科学(スループット)演算向けの特定用途向けコアを含んでよい。複数の異なるプロセッサの実装は、1)汎用演算向けの1つ又は複数の汎用インオーダコア及び/又は汎用演算向けの1つ又は複数の汎用アウトオブオーダコアを含むCPU、並びに2)主にグラフィクス及び/又は科学(スループット)向けの1つ又は複数の特定用途向けコアを含むコプロセッサを含んでよい。このような複数の異なるプロセッサは、複数の異なるコンピュータシステムアーキテクチャをもたらし、これらは、1)CPUとは別のチップ上のコプロセッサ、2)CPUと同じパッケージにおける別のダイ上のコプロセッサ、3)CPUと同じダイ上のコプロセッサ(この場合、このようなコプロセッサは、場合によっては、集積グラフィクス及び/又は科学(スループット)ロジックのような特定用途向けロジック、又は特定用途向けコア等と称される)、及び4)同じダイ上に、説明されたCPU(場合によっては、アプリケーションコア又はアプリケーションプロセッサと称される)、上述されたコプロセッサ、及び追加の機能性を含み得るシステムオンチップを含んでよい。次に、複数の例示的なコアアーキテクチャが説明された後、複数の例示的なプロセッサ及びコンピュータアーキテクチャが説明される。
例示的なコアアーキテクチャ
インオーダ及びアウトオブオーダコアのブロック図
図6Aは、本発明の複数の実施形態に係る例示的なインオーダパイプライン及び例示的なレジスタリネーミング、アウトオブオーダ発行/実行パイプラインの両方を示すブロック図である。図6Bは、本発明の複数の実施形態に係るプロセッサに含まれるべきインオーダアーキテクチャコアの例示的な実施形態及び例示的なレジスタリネーミング、アウトオブオーダ発行/実行アーキテクチャコアの両方を示すブロック図である。図6A−Bにおける複数の実線のボックスは、インオーダパイプライン及びインオーダコアを示し、任意に追加された複数の破線のボックスは、レジスタリネーミング、アウトオブオーダ発行/実行パイプライン及びコアを示す。インオーダ態様がアウトオブオーダ態様のサブセットであるとして、アウトオブオーダ態様が説明される。
図6Aにおいて、プロセッサパイプライン600が、フェッチステージ602、長さデコードステージ604、デコードステージ606、配分ステージ608、リネーミングステージ610、スケジューリング(ディスパッチ又は発行としても知られる)ステージ612、レジスタ読み出し/メモリ読み出しステージ614、実行ステージ616、ライトバック/メモリ書き込みステージ618、例外処理ステージ622、及びコミットステージ624を含む。
図6Bは、実行エンジンユニット650と連結されるフロントエンドユニット630を含むプロセッサコア690を示し、両方ともメモリユニット670と連結されている。コア690は、縮小命令セットコンピューティング(RISC)コア、複合命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コア、又はハイブリッドあるいは代替的なコアタイプであってよい。さらに他の選択肢として、コア690は、例えば、ネットワーク又は通信コア、圧縮エンジン、コプロセッサコア、汎用演算グラフィクス処理ユニット(GPGPU)コア、グラフィクスコア等のような特定用途向けコアであってよい。
フロントエンドユニット630は、命令キャッシュユニット634と連結される分岐予測ユニット632を含み、命令キャッシュユニット634は命令トランスレーションルックアサイドバッファ(TLB)636と連結され、命令トランスレーションルックアサイドバッファ636は命令フェッチユニット638と連結され、命令フェッチユニット638はデコードユニット640と連結される。デコードユニット640(又はデコーダ)は、複数の命令をデコードし、1つ又は複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、又は、元の命令からデコードされ、もしくは別の方法でそれを反映し、もしくはそれから派生する他の制御信号を、出力として生成してよい。デコードユニット640は、様々な異なるメカニズムを用いて実装されてよい。適切なメカニズムの例は、限定されるものではないが、複数のルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ(PLA)、マイクロコードリードオンリメモリ(ROM)等を含む。一実施形態において、コア690は、複数の特定のマクロ命令に対するマイクロコードを(例えば、デコードユニット640に、さもなければフロントエンドユニット630内に)格納する、マイクロコードROM又は他の媒体を含む。デコードユニット640は、実行エンジンユニット650内のリネーミング/アロケータユニット652と連結される。
実行エンジンユニット650は、リタイアメントユニット654及び1つ又は複数のスケジューラユニット656のセットと連結されるリネーミング/アロケータユニット652を含む。スケジューラユニット656は、複数の予約ステーション、中央命令ウィンドウ等を含む、任意の数の異なるスケジューラを表す。スケジューラユニット656は、物理レジスタファイルユニット658に連結される。各物理レジスタファイルユニット658は、1つ又は複数の物理レジスタファイルを表し、これらのうち異なるものは、スカラ整数、スカラ浮動小数点、パック型整数、パック型浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス(例えば、実行されるべき次の命令のアドレスである命令ポインタ)等のような1つ又は複数の異なるデータタイプを格納する。一実施形態において、物理レジスタファイルユニット658は、ベクトルレジスタユニット、書き込みマスクレジスタユニット、及びスカラレジスタユニットを備える。これらのレジスタユニットは、複数のアーキテクチャベクトルレジスタ、ベクトルマスクレジスタ、及び汎用レジスタを提供してよい。物理レジスタファイルユニット658は、リタイアメントユニット654によって重ねられて、(例えば、リオーダバッファ及びリタイアメントレジスタファイルを用いる、フューチャファイル、ヒストリバッファ、及びリタイアメントレジスタファイルを用いる、レジスタマップ及び複数のレジスタのプールを用いる等で)レジスタリネーミング及びアウトオブオーダ実行が実装され得る様々な態様を示す。リタイアメントユニット654及び物理レジスタファイルユニット658は、実行クラスタ660に連結される。実行クラスタ660は、1つ又は複数の実行ユニット662のセット及び1つ又は複数のメモリアクセスユニット664のセットを含む。実行ユニット662は、複数の様々なオペレーション(例えば、シフト、加算、減算、乗算)を、複数の様々なタイプのデータ(例えば、スカラ浮動小数点、パック型整数、パック型浮動小数点、ベクトル整数、ベクトル浮動小数点)に対して実行してよい。いくつかの実施形態は、複数の特定の機能又は複数の機能の複数のセット専用の、多数の実行ユニットを含み得るが、他の実施形態は、1つだけの実行ユニット、又は、それら全てで全ての機能を実行する複数の実行ユニットを含んでよい。スケジューラユニット656、物理レジスタファイルユニット658、及び実行クラスタ660は、複数である可能性があるとして示されるが、その理由は、複数の特定の実施形態は、特定の複数のタイプのデータ/オペレーションに対して、複数の別のパイプラインを形成するからである(例えば、各々がそれら独自のスケジューラユニット、物理レジスタファイルユニット及び/又は実行クラスタを有する、スカラ整数パイプライン、スカラ浮動小数点/パック型整数/パック型浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、及び/又はメモリアクセスパイプラインであり、個別のメモリアクセスパイプラインの場合、このパイプラインの実行クラスタのみがメモリアクセスユニット664を有する複数の特定の実施形態が実装される)。複数の別のパイプラインが使用される場合、これらのパイプラインのうち1つ又は複数は、アウトオブオーダ発行/実行であってよく、残りはインオーダであってよいことを理解されたい。
メモリアクセスユニット664のセットは、メモリユニット670と連結され、メモリユニット670は、2次(L2)キャッシュユニット676と連結されるデータキャッシュユニット674と連結されるデータTLBユニット672を含む。例示的な一実施形態において、メモリアクセスユニット664は、ロードユニット、ストアアドレスユニット、及びストアデータユニットを含んでよく、それらの各々はメモリユニット670内のデータTLBユニット672に連結される。命令キャッシュユニット634は、メモリユニット670内の2次(L2)キャッシュユニット676とさらに連結される。L2キャッシュユニット676は、1つ又は複数の他のレベルのキャッシュと連結され、最終的にメインメモリと連結される。
例として、例示的なレジスタリネーミング、アウトオブオーダ発行/実行コアアーキテクチャは、以下のようにパイプライン600を実装してよい。1)命令フェッチ638が、フェッチステージ602及び長さデコードステージ604を実行する、2)デコードユニット640が、デコードステージ606を実行する、3)リネーミング/アロケータユニット652が、配分ステージ608及びリネーミングステージ610を実行する、4)スケジューラユニット656が、スケジューリングステージ612を実行する、5)物理レジスタファイルユニット658及びメモリユニット670が、レジスタ読み出し/メモリ読み出しステージ614を実行し、実行クラスタ660が、実行ステージ616を実行する、6)メモリユニット670及び物理レジスタファイルユニット658が、ライトバック/メモリ書き込みステージ618を実行する、7)複数の様々なユニットが、例外処理ステージ622に関わり得る、ならびに8)リタイアメントユニット654及び物理レジスタファイルユニット658が、コミットステージ624を実行する。
コア690は、本明細書において説明される命令を含む1つ又は複数の命令セット(例えば、x86命令セット(複数のより新たなバージョンと共に追加された、いくつかの拡張を有する)カリフォルニア州サニーベールのMIPSテクノロジーズのMIPS命令セット、カリフォルニア州サニーベールのARMホールディングスの(NEONのような任意の追加的な拡張を有する)ARM命令セット)をサポートしてよい。一実施形態において、コア690は、パック型データ命令セット拡張をサポートするためのロジック(例えば、AVX1、AVX2)を含み、これにより、多くのマルチメディアアプリケーションによって用いられる複数のオペレーションは、パック型データを用いて実行可能となる。
コアは、マルチスレッディング(複数のオペレーション又はスレッドの2つ又はそれより多くの並列なセットを実行すること)をサポートしてよく、時分割マルチスレッディング、同時マルチスレッディング(ここで、単一の物理コアは、物理コアが同時マルチスレッディングを実行する複数のスレッドの各々に、論理コアを提供する)、又はこれらの組み合わせ(例えば、時分割フェッチ及びデコード、その後、インテル(登録商標)ハイパースレッディングテクノロジーでのような同時マルチスレッディング)を含む複数の様々な態様で、これを実行してよいことを理解されたい。
アウトオブオーダ実行との関連でレジスタリネーミングを説明するが、レジスタリネーミングは、インオーダアーキテクチャで利用可能であることを理解されたい。プロセッサの図示された実施形態は、個別の命令及びデータキャッシュユニット634/674及び共有L2キャッシュユニット676をさらに含むが、複数の代替的な実施形態は、命令及びデータの両方のための、例えば、1次(L1)内部キャッシュ又はマルチレベルの内部キャッシュのような単一の内部キャッシュを有してよい。いくつかの実施形態において、システムは内部キャッシュと、コア及び/又はプロセッサの外部にある外部キャッシュとの組み合わせを含んでよい。代わりに、全てのキャッシュは、コア及び/又はプロセッサの外部にあってよい。
具体的な例示的インオーダコアアーキテクチャ
図7A−Bは、より詳細な、例示的なインオーダコアアーキテクチャのブロック図を示し、ここで、コアは、チップ内のいくつかの論理ブロック(同じタイプ及び/又は異なるタイプの複数の他のコアを含む)の中の1つであり得る。複数の論理ブロックは、アプリケーションに応じて、高帯域幅の相互接続ネットワーク(例えば、リングネットワーク)を介していくつかの固定機能ロジック、メモリI/Oインタフェース、及び他の必要なI/Oロジックと通信を行う。
図7Aは、本発明の複数の実施形態に係る、単一のプロセッサコアのブロック図であって、そのオンダイ相互接続ネットワーク702への接続、及びその2次(L2)キャッシュのローカルサブセット704と共に示す。一実施形態において、命令デコーダ700が、パック型データ命令セット拡張を有するx86命令セットをサポートする。L1キャッシュ706は、スカラ及びベクトルユニットに入るキャッシュメモリへの低レイテンシアクセスを可能にする。一実施形態において(設計を単純化するために)、スカラユニット708及びベクトルユニット710が、個別のレジスタセット(それぞれ、スカラレジスタ712及びベクトルレジスタ714)を用い、それらの間で転送されたデータはメモリに書き込まれ、次に、1次(L1)キャッシュ706からリードバックされるが、本発明の代替的な複数の実施形態は、異なるアプローチを用いてよい(例えば、単一のレジスタセットを用いるか、又はデータをライトバックもリードバックもすることなく、2つのレジスタファイル間で転送することを可能にする通信パスを含む)。
L2キャッシュのローカルサブセット704は、1つのプロセッサコア毎に1つずつ、個別のローカルサブセットに分割されたグローバルL2キャッシュの一部である。各プロセッサコアは、L2キャッシュのそれ独自のローカルサブセット704へのダイレクトアクセスパスを有する。プロセッサコアによって読み出されたデータは、そのL2キャッシュサブセット704内に格納され、他のプロセッサコアがそれら独自のローカルL2キャッシュサブセットへのアクセスと並列に、迅速にアクセスされることができる。プロセッサコアによって書き込まれたデータは、必要に応じて、それ独自のL2キャッシュサブセット704内に格納され、他のサブセットからフラッシュされる。リングネットワークは、共有データに対するコヒーレンシを保証する。リングネットワークは、双方向性であることにより、複数のプロセッサコア、L2キャッシュ、及び他の論理ブロックのような複数のエージェントが、チップ内で互いに通信を行うことを可能にする。各リングデータパスは、1つの方向毎に1012ビット幅である。
図7Bは、本発明の複数の実施形態に係る図7Aにおけるプロセッサコアの一部の拡大図である。図7Bは、L1キャッシュ706の一部であるL1データキャッシュ706A、ならびにベクトルユニット710及び複数のベクトルレジスタ714に関するさらなる詳細を含む。具体的には、ベクトルユニット710は、整数、単精度浮動小数、及び倍精度浮動小数命令のうち1つ又は複数を実行する、16幅ベクトル処理ユニット(VPU)(16幅ALU728を参照)である。VPUは、スウィズルユニット720によるレジスタ入力のスウィズル、数値変換ユニット722A−Bによる数値変換、及び複製ユニット724によるメモリ入力に対する複製をサポートする。書き込みマスクレジスタ726によれば、結果的な複数のベクトルの書き込みを叙述することが可能となる。
集積メモリコントローラ及びグラフィクスを有するプロセッサ
図8は、本発明の複数の実施形態に係る、1つより多くのコアを有してよく、集積メモリコントローラを有してよく、集積グラフィクスを有してよい、プロセッサ800のブロック図である。図8における複数の実線のボックスは、単一のコア802A、システムエージェント810、1つ又は複数のバスコントローラユニット816のセットを備えるプロセッサ800を示し、任意に追加された複数の破線のボックスは、複数のコア802A−N、システムエージェントユニット810内の1つ又は複数の集積メモリコントローラユニット814のセット、及び特定用途向けロジック808を備える代替的なプロセッサ800を示す。
従って、プロセッサ800の複数の異なる実装は、1)(1つ又は複数のコアを含み得る)集積グラフィクス及び/又は科学(スループット)ロジックである特定用途向けロジック808、及び1つ又は複数の汎用コア(例えば、複数の汎用インオーダコア、複数の汎用アウトオブオーダコア、これら2つの組み合わせ)である複数のコア802A−Nを有するCPU、2)主にグラフィクス及び/又は科学(スループット)を目的とする多数の特定用途向けコアである複数のコア802A−Nを有するコプロセッサ、及び3)多数の汎用インオーダコアである複数のコア802A−Nを有するコプロセッサを含んでよい。従って、プロセッサ800は、汎用プロセッサ、コプロセッサ、又は例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU(汎用グラフィクス処理ユニット)、ハイスループット多集積コア(MIC)コプロセッサ(30個又はそれより多くのコアを含む)、組み込みプロセッサ等のような特定用途向けプロセッサであってよい。プロセッサは、1つ又は複数のチップ上に実装されてよい。プロセッサ800は、例えば、BiCMOS、CMOS、又はNMOSのような、多数の処理技術のいずれかを用いた1つ又は複数の基板の一部であってよく、及び/又はその上に実装されてよい。
メモリ階層は、複数のコア内の1つ又は複数のレベルのキャッシュ、複数の共有キャッシュユニット806のセット又はこれらの1つ又は複数、及び複数の集積メモリコントローラユニット814のセットに連結された外部メモリ(不図示)を含む。共有キャッシュユニット806のセットは、2次(L2)、3次(L3)、4次(L4)、又は他のレベルのキャッシュ等のような1つ又は複数の中レベルキャッシュ、ラストレベルキャッシュ(LLC)、及び/又はこれらの組み合わせを含んでよい。一実施形態において、リングベースの相互接続ユニット812が、集積グラフィクスロジック808、複数の共有キャッシュユニット806のセット、及びシステムエージェントユニット810/集積メモリコントローラユニット814を相互接続するが、複数の代替的な実施形態は、このようなユニットを相互接続する任意の数の周知技術を用いてよい。一実施形態において、1つ又は複数のキャッシュユニット806とコア802−A−Nとの間において、コヒーレンシが維持される。
いくつかの実施形態において、複数のコア802A−Nのうち1つ又は複数は、マルチスレッディングが可能である。システムエージェント810は、複数のコア802A−Nを調整及びオペレーションするそれらの複数のコンポーネントを含む。システムエージェントユニット810は、例えば、電力制御ユニット(PCU)及びディスプレイユニットを含んでよい。PCUは、コア802A−N及び集積グラフィクスロジック808の電力状態の調整に必要なロジック及び複数のコンポーネントであってよく、又はそれらを含んでよい。ディスプレイユニットは、1つ又は複数の外部接続されたディスプレイを駆動するためのものである。
コア802A−Nは、アーキテクチャ命令セットに関して同種又は異種とすることができ、すなわち、コア802A−Nのうちの2つ又はそれより多くは、同じ命令セットを実行可能であってよく、その他は、その命令セット又は異なる命令セットのサブセットのみ実行可能であってよい。
例示的なコンピュータアーキテクチャ
図9−12は、複数の例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドPC、パーソナルデジタルアシスタント、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィクスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤ、ハンドヘルドデバイス、及び様々な他の電子デバイスのための、当技術分野で既知の他の複数のシステム設計及び構成も適している。概して、本明細書において開示されるように、プロセッサ及び/又は他の実行ロジックを組み込むことが可能な多様なシステム又は電子デバイスが、概して適切である。
ここで、図9を参照すると、本発明の一実施形態に係るシステム900のブロック図が示される。システム900は、コントローラハブ920と連結される、1つ又は複数のプロセッサ910、915を含んでよい。一実施形態において、コントローラハブ920は、グラフィクスメモリコントローラハブ(GMCH)990及び入出力ハブ(IOH)950(複数の個別のチップ上にあってよい)を含む。GMCH990は、メモリ940及びコプロセッサ945が連結されたメモリ及びグラフィクスコントローラを含む。IOH950は、複数の入出力(I/O)デバイス960をGMCH990に連結する。代わりに、メモリ及びグラフィクスコントローラの一方又は両方は、(本明細書において説明されるように)プロセッサ内に一体化され、メモリ940及びコプロセッサ945は、プロセッサ910と、IOH950を備える単一のチップのコントローラハブ920とに、直接連結される。
複数の追加のプロセッサ915は、図9において破線で表されることにより、任意である性質が示されている。各プロセッサ910、915は、本明細書において説明される処理コアのうち1つ又は複数を含んでよく、プロセッサ800の何らかのバージョンであってよい。
メモリ940は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、又はその2つの組み合わせであってよい。少なくとも1つの実施形態のために、コントローラハブ920は、フロントサイドバス(FSB)のようなマルチドロップバス、クイックパスインタコネクト(QPI)のようなポイントツーポイントインタフェース、又は同様の接続部995を介して、プロセッサ910、915と通信する。
一実施形態において、コプロセッサ945は、例えば、ハイスループットMICプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU、組み込みプロセッサ等のような特定用途向けプロセッサである。一実施形態において、コントローラハブ920は、集積グラフィクスアクセラレータを含んでよい。
物理リソース910、915の間には、アーキテクチャ上、マイクロアーキテクチャ上、熱的、電力消費等の複数の特性を含む様々な利点の基準に関して、様々な相違がある。
一実施形態において、プロセッサ910は、一般的なタイプの複数のデータ処理オペレーションを制御する複数の命令を実行する。複数のコプロセッサ命令が、複数の命令内に組み込まれてよい。プロセッサ910は、これらのコプロセッサ命令が、取り付けられたコプロセッサ945によって実行されるべきタイプのものと認識する。従って、プロセッサ910は、コプロセッサバス又は他の相互接続において、これらの複数のコプロセッサ命令(又は複数のコプロセッサ命令を表す複数の制御信号)を、コプロセッサ945に発行する。コプロセッサ945は、複数の受信されたコプロセッサ命令を受理し、これらを実行する。
ここで、図10を参照すると、本発明の実施形態に係る、第1のより具体的な例示的システム1000のブロック図が示される。図10に示されるように、マルチプロセッサシステム1000は、ポイントツーポイントインタコネクトシステムであり、ポイントツーポイントインタコネクト1050を介して連結される第1のプロセッサ1070及び第2のプロセッサ1080を含む。プロセッサ1070及び1080の各々はプロセッサ800の何らかのバージョンであってよい。本発明の一実施形態において、プロセッサ1070及び1080は、それぞれ、プロセッサ910及び915であり、コプロセッサ1038は、コプロセッサ945である。他の実施形態において、プロセッサ1070及び1080は、それぞれ、プロセッサ910及びコプロセッサ945である。
プロセッサ1070及び1080は、集積メモリコントローラ(IMC)ユニット1072及び1082をそれぞれ含むことが示される。プロセッサ1070は、そのバスコントローラユニットの一部として、ポイントツーポイント(P−P)インタフェース1076及び1078をさらに含み、同様に、第2のプロセッサ1080は、P−Pインタフェース1086及び1088を含む。プロセッサ1070、1080は、P−Pインタフェース回路1078、1088を用いて、ポイントツーポイント(P−P)インタフェース1050を介して情報を交換してよい。図10に示されるように、IMC1072及び1082は、プロセッサをそれぞれのメモリ、すなわち、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部たり得るメモリ1032及びメモリ1034に連結する。
プロセッサ1070、1080の各々は、ポイントツーポイントインタフェース回路1076、1094、1086、1098を用いて、個々のP−Pインタフェース1052、1054を介して、チップセット1090と情報を交換してよい。チップセット1090は、高性能インタフェース1039を介してコプロセッサ1038と、任意に情報を交換してよい。一実施形態において、コプロセッサ1038は、例えば、ハイスループットMICプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU、組み込みプロセッサ等のような特定用途向けプロセッサである。
共有キャッシュ(不図示)は、いずれかのプロセッサに含まれてよく、又は両方のプロセッサの外部にあってよいが、P−P相互接続を介して複数のプロセッサとなおも接続され、これにより、プロセッサが低電力モードに置かれた場合に、いずれか又は両方のプロセッサのローカルキャッシュ情報が共有キャッシュ内に格納可能となる。
チップセット1090は、インタフェース1096を介して第1のバス1016に連結されてよい。一実施形態において、第1のバス1016は、ペリフェラルコンポーネントインタコネクト(PCI)バス、又はPCIエクスプレスバス、又は他の第3世代I/O相互接続バスのようなバスであってもよいが、本発明の範囲はこれに限定されるものではない。
図10に示されるように、複数の様々なI/Oデバイス1014が、第1のバス1016を第2のバス1020に連結するバスブリッジ1018と共に、第1のバス1016に連結されてよい。一実施形態において、コプロセッサ、ハイスループットMICプロセッサ、GPGPU、(例えば、グラフィクスアクセラレータ又はデジタル信号処理(DSP)ユニットのような)アクセラレータ、フィールドプログラマブルゲートアレイ、又は任意の他のプロセッサのような1つ又は複数の追加のプロセッサ1015が、第1のバス1016に連結される。一実施形態において、第2のバス1020はローピンカウント(LPC)バスであってよい。一実施形態において、例えば、キーボード及び/又はマウス1022、通信デバイス1027、ならびに複数の命令/コード及びデータ1030を含み得るディスクドライブ又は他の大容量ストレージデバイスのようなストレージユニット1028を含、様々なデバイスが、第2のバス1020に連結されてよい。さらに、オーディオI/O1024が、第2のバス1020に連結されてよい。なお、他の複数のアーキテクチャが、適用可能である。例えば、図10のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のこのようなアーキテクチャを実装してよい。
ここで、図11を参照すると、本発明の実施形態に係る第2のより具体的な例示的システム1100のブロック図が示される。図10及び11における複数の同様の要素は、同様の参照番号を有し、図10の複数の特定の態様は、図11の複数の他の態様への妨げとならないよう、図11から省略されている。
図11は、プロセッサ1070、1080がそれぞれ集積メモリ及びI/O制御ロジック(「CL」)1072及び1082を含んでよいことを示す。従って、CL1072、1082は、集積メモリコントローラユニットを含み、かつ、I/O制御ロジックを含む。図11は、メモリ1032、1034がCL1072、1082と連結されるのみならず、I/Oデバイス1114も制御ロジック1072、1082と連結されることも示す。レガシI/Oデバイス1115は、は、チップセット1090と連結される。
ここで、図12を参照すると、本発明の実施形態に係るSoC1200のブロック図が示される。図8における複数の同様の要素は、同様の参照番号を有する。また、複数の破線ボックスは、より高度なSoCにおける任意の機能である。図12において、相互接続ユニット1202は、1つ又は複数のコア202A−Nのセット、及び共有キャッシュユニット806を含むアプリケーションプロセッサ1210、システムエージェントユニット810、バスコントローラユニット816、集積メモリコントローラユニット814、集積グラフィクスロジック、画像プロセッサ、オーディオプロセッサ、及びビデオプロセッサを含み得る複数のコプロセッサ1220のセット又はそのうちの1つ又は複数、スタティックランダムアクセスメモリ(SRAM)ユニット1230、ダイレクトメモリアクセス(DMA)ユニット1232、及び1つ又は複数の外部ディスプレイと連結するためのディスプレイユニット1240と連結される。一実施形態において、コプロセッサ1220は、例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、GPGPU、ハイスループットMICプロセッサ、組み込みプロセッサ等のような特定用途向けプロセッサを含む。
本明細書において開示される複数のメカニズムの複数の実施形態は、ハードウェア、ソフトウェア、ファームウェア、又はこのような複数の実装アプローチの組み合わせにより実装されてよい。本発明の複数の実施形態は、少なくとも1つのプロセッサ、ストレージシステム(揮発性及び不揮発性メモリ、及び/又は複数のストレージ要素を含む)、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスを備える複数のプログラマブルシステム上で実行する複数のコンピュータプログラム又はプログラムコードとして実装されてよい。
本明細書において説明される複数の機能を実行し、出力情報を生成する複数の命令を入力すべく、図10に示されるコード1030のようなプログラムコードが適用されてよい。出力情報は、既知の態様で、1つ又は複数の出力デバイスに適用されてよい。本願の目的のために、処理システムは、例えば、デジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、又はマイクロプロセッサのようなプロセッサを有する何らかのシステムを含む。
プログラムコードは、処理システムと通信を行う高水準の手続き型又はオブジェクト指向プログラミング言語で実装されてよい。プログラムコードは、望ましい場合には、アセンブリ又は機械言語で実装されてもよい。実際に、本明細書において説明される複数のメカニズムは、その範囲において、何らかの特定のプログラミング言語に限定されるものではない。いずれの場合であっても、言語は、コンパイラ型又はインタプリタ型言語であってよい。
少なくとも1つの実施形態の1つ又は複数の態様は、プロセッサ内の様々なロジックを表す機械可読媒体に格納された代表的な複数の命令によって実装されてよく、これらは、機械によって読み出された場合に、本明細書において説明される複数の技術を実行するロジックを、機械に製造させる。「IPコア」として知られるこのような複数の表現は、有形の機械可読媒体に格納されてよく、様々な顧客、又は実際にロジック又はプロセッサを作成する複数の製造機械にロードする複数の製造設備に供給されてよい。
このような機械可読記憶媒体は、ハードディスクと、フロッピ(登録商標)ディスク、光ディスク、コンパクトディスクリードオンリメモリ(CD−ROM)、書き換え可能コンパクトディスク(CD−RW)、及び光磁気ディスクのような任意の他のタイプのディスクを含む記憶媒体、リードオンリメモリ(ROM)と、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)のようなランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、及び相変化メモリ(PCM)のような半導体デバイス、磁気もしくは光カード、又は複数の電子的命令を格納するのに適切な任意の他のタイプの媒体を含む、機械又はデバイスにより製造又は形成される、非一時的で有形の複数の構成の物品を含んでよいが、これらに限定されるものではない。
従って、本発明の複数の実施形態は、本明細書において説明される複数の構造、回路、装置、複数のプロセッサ、及び/又はシステム機能を定義するハードウェア記述言語(HDL)のような複数の命令又は設計データを含む、非一時的な有形の機械可読媒体をさらに含む。このような複数の実施形態は、プログラム製品と称されてもよい。
エミュレート(バイナリ変換、コードモーフィング等を含む)
いくつかの場合において、命令コンバータは、ソース命令セットからターゲット命令セットに命令を変換するために用いられてよい。例えば、命令コンバータは、コアによって処理されるべき1つ又は複数の他の命令に、命令をトランスレート(例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を用いて)、モーフィング、エミュレート、又は変換してよい。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、又はこれらの組み合わせにおいて実装されてよい。命令コンバータは、プロセッサ上にあってよく、プロセッサ外にあってよく、又は、一部がプロセッサ上かつ一部がプロセッサ外にあってよい。
図13は、本発明の複数の実施形態に係る、ソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するためのソフトウェア命令コンバータの使用を対比させるブロック図である。図示された実施形態において、命令コンバータはソフトウェア命令コンバータであるが、代わりに、命令コンバータは、ソフトウェア、ファームウェア、ハードウェア、又はこれらの様々な組み合わせで実装されてよい。図13は、少なくとも1つのx86命令セットコアを備えるプロセッサ1316によってネイティブで実行可能なx86バイナリコード1306を生成すべく、高水準言語1302のプログラムが、x86コンパイラ1304を用いてコンパイルされてよいことを示す。少なくとも1つのx86命令セットコアを備えるプロセッサ1316は、少なくとも1つのx86命令セットコアを備えるインテル社製プロセッサと実質的に同じ結果を実現すべく、(1)インテルx86命令セットコアの命令セットの大部分、又は(2)少なくとも1つのx86命令セットコアを備えるインテル社製プロセッサで動作することを目的としたアプリケーション又は他のソフトウェアのオブジェクトコードバージョンを互換的に実行するか、又は別の方法で処理することによって、少なくとも1つのx86命令セットコアを備えるインテル社製プロセッサと実質的に同じ機能を実行することができる任意のプロセッサを表す。x86コンパイラ1304は、追加のリンク処理を用いて、又はこれ用いることなく、少なくとも1つのx86命令セットコアを備えるプロセッサ1316上で実行可能なx86バイナリコード1306(例えば、オブジェクトコード)を生成するように動作可能なコンパイラを表す。同様に、図13は、高水準言語1302のプログラムが代替的な命令セットコンパイラ1308を用いてコンパイルされることにより、少なくとも1つのx86命令セットコアを有さないプロセッサ1314(例えば、カリフォルニア州サニーベールのMIPSテクノロジーズのMIPS命令セットを実行するか、及び/又はカリフォルニア州サニーベールのARMホールディングスのARM命令セットを実行するコアを有するプロセッサ)によってネイティブで実行され得る代替的な命令セットバイナリコード1310が生成されてよいことを示す。命令コンバータ1312は、x86バイナリコード1306を、x86命令セットコアを備えないプロセッサ1314によってネイティブで実行可能なコードに変換するために用いられる。この変換されたコードは、代替的な命令セットバイナリコード1310と同じである可能性は低い。なぜなら、これが可能な命令コンバータの製作は難しいからである。しかしながら、変換されたコードは、一般的なオペレーションを実現し、代替的な命令セットからの命令で構成される。従って、命令コンバータ1312は、エミュレート、シミュレーション又は任意の他の処理を通して、x86命令セットプロセッサ又はコアを有さないプロセッサ又は他の電子デバイスがx86バイナリコード1306を実行することを可能にする、ソフトウェア、ファームウェア、ハードウェア、又はこれらの組み合わせを表す。
本実施形態の例を下記の各項目として示す。
[項目1]
命令をデコードするデコーダハードウェアと、
前記デコーダハードウェアによってデコードされた前記命令に関連付けられた少なくとも1つのソースオペランドからデータを取得するオペランド取得ハードウェアと、
少なくとも1つのステータスビットを含む結果を生成し、前記結果及び少なくとも1つのステータスビットを単一のデスティネーション物理格納位置に格納させるべく、前記デコードされた命令を実行する実行ハードウェアと、
を備え、
前記少なくとも1つのステータスビット及び結果は、単一の、物理レジスタの読み出しを通してアクセス可能である、ハードウェア装置。
[項目2]
前記命令のアーキテクチャレジスタを物理レジスタにマッピングし、前記ハードウェア装置のステータスレジスタを前記物理レジスタにマッピングするレジスタリネーミングハードウェアをさらに備える、項目1に記載のハードウェア装置。
[項目3]
前記物理レジスタは、複数の最下位ビット及びステータスビットのデータを複数の最上位ビットに格納する、項目1または2に記載のハードウェア装置。
[項目4]
前記物理レジスタは、複数の最上位ビット及びステータスビットのデータを複数の最下位ビットに格納する、項目1または2に記載のハードウェア装置。
[項目5]
前記少なくとも1つのステータスビットは、キャリー、サイン、オーバーフロー、パリティ、ゼロ、及びアジャストの少なくとも1つに対する複数のビットを含む、項目1から4のいずれか1項に記載のハードウェア装置。
[項目6]
前記命令は、条件付き分岐、条件付きジャンプ、条件付き移動、及び条件付きメモリオペレーションの1つである、項目1から5のいずれか1項に記載のハードウェア装置。
[項目7]
前記命令を示すオペコードを含む前記命令は、前記少なくとも1つのステータスビットを、前記結果と共に、前記単一のデスティネーション物理格納位置に格納させる、項目1から6のいずれか1項に記載のハードウェア装置。
[項目8]
前記命令を示すデスティネーションオペランドを含む前記命令は、前記少なくとも1つのステータスビットを、前記結果と共に、前記単一のデスティネーション物理格納位置に格納させる、項目1から7のいずれか1項に記載のハードウェア装置。
[項目9]
命令をデコードするデコーダハードウェアと、
前記デコーダハードウェアによってデコードされた前記命令に関連付けられた少なくとも1つのソースオペランドからデータを取得するオペランド取得ハードウェアと、
少なくとも1つのソース物理レジスタのステータス条件の評価に基づいて、前記命令のオペレーションを条件に応じて実行すべく、前記デコードされた命令を実行する実行ハードウェアと、
を備え、
前記ソースオペランドは、データに加えて少なくとも1つのステータスビットを含む、
ハードウェア装置。
[項目10]
前記命令のアーキテクチャレジスタを物理レジスタにマッピングし、前記ハードウェア装置のステータスレジスタを前記物理レジスタにマッピングするレジスタリネーミングハードウェアをさらに備える、項目9に記載のハードウェア装置。
[項目11]
前記物理レジスタは、複数の最下位ビット及びステータスビットのデータを複数の最上位ビットに格納する、項目9または10に記載のハードウェア装置。
[項目12]
前記物理レジスタは、複数の最上位ビット及びステータスビットのデータを複数の最下位ビットに格納する、項目9から11のいずれか1項に記載のハードウェア装置。
[項目13]
少なくとも1つのステータスビットは、キャリー、サイン、オーバーフロー、パリティ、ゼロ、及びアジャストの少なくとも1つに対する複数のビットを含む、項目9から12のいずれか1項に記載のハードウェア装置。
[項目14]
前記命令は、条件付き分岐、条件付きジャンプ、条件付き移動、及び条件付きメモリオペレーションの1つである、項目9から13のいずれか1項に記載のハードウェア装置。
[項目15]
前記命令を示すオペコードを含む前記命令は、少なくとも1つのステータスビット及びデータを含む前記ソース物理レジスタからステータス情報を読み出す、項目9から14のいずれか1項に記載のハードウェア装置。
[項目16]
前記命令は、前記ソース物理レジスタが少なくとも1つのステータスビット及びデータを格納することのインジケーションを含む、項目9から15のいずれか1項に記載のハードウェア装置。
[項目17]
前記命令は、デスティネーションオペランドを含む、項目9から16のいずれか1項に記載のハードウェア装置。
[項目18]
前記命令は、オフセットオペランドを含む、項目9から17のいずれか1項に記載のハードウェア装置。
[項目19]
命令をデコードするデコーダ手段と、
前記デコーダ手段によってデコードされた前記命令に関連付けられた少なくとも1つのソースオペランドからデータを取得するオペランド取得手段と、
少なくとも1つのステータスビットを含む結果を生成し、前記結果及び少なくとも1つのステータスビットを単一のデスティネーション物理格納位置に格納させるべく、前記デコードされた命令を実行する実行手段と、
を備え、
前記少なくとも1つのステータスビット及び結果は、単一の、物理レジスタの読み出しを通してアクセス可能である、ハードウェア装置。
[項目20]
前記命令のアーキテクチャレジスタを物理レジスタにマッピングし、前記ハードウェア装置のステータスレジスタを前記物理レジスタにマッピングするレジスタリネーミング手段をさらに備える、項目19に記載のハードウェア装置。
[項目21]
前記物理レジスタは、複数の最下位ビット及びステータスビットのデータを複数の最上位ビットに格納する、項目19または20に記載のハードウェア装置。
[項目22]
前記物理レジスタは、複数の最上位ビット及びステータスビットのデータを複数の最下位ビットに格納する、項目19または20に記載のハードウェア装置。
[項目23]
前記少なくとも1つのステータスビットは、キャリー、サイン、オーバーフロー、パリティ、ゼロ、及びアジャストの少なくとも1つに対する複数のビットを含む、項目19から22のいずれか1項に記載のハードウェア装置。
[項目24]
前記命令は、条件付き分岐、条件付きジャンプ、条件付き移動、及び条件付きメモリオペレーションの1つである、項目19から23のいずれか1項に記載のハードウェア装置。
[項目25]
前記命令を示すオペコードを含む前記命令は、前記少なくとも1つのステータスビットを、前記結果と共に、前記単一のデスティネーション物理格納位置に格納させる、項目19から24のいずれか1項に記載のハードウェア装置。

Claims (24)

  1. 命令をデコードするデコーダハードウェアと、
    前記デコーダハードウェアによってデコードされた前記命令に関連付けられた少なくとも1つのソースオペランドからデータを取得するオペランド取得ハードウェアと、
    少なくとも1つのステータスビットを含む結果を生成し、前記結果及び少なくとも1つのステータスビットを単一のデスティネーション物理格納位置に格納させるべく、前記デコードされた命令を実行する実行ハードウェアと、
    を備え、
    前記少なくとも1つのステータスビット及び結果は、単一の、物理レジスタの読み出しを通してアクセス可能であり、
    前記命令のオペコードまたはオペランドは、前記単一のデスティネーション物理格納位置に前記結果及び前記少なくとも1つのステータスビットを格納することを示す、
    ハードウェア装置。
  2. 前記命令のアーキテクチャレジスタを物理レジスタにマッピングし、前記ハードウェア装置のステータスレジスタを前記物理レジスタにマッピングするレジスタリネーミングハードウェアをさらに備える、請求項1に記載のハードウェア装置。
  3. 前記物理レジスタは、データを最下位ビットに格納し、前記ステータスビット最上位ビットに格納する、請求項1または2に記載のハードウェア装置。
  4. 前記物理レジスタは、データを最上位ビットに格納し、前記ステータスビット最下位ビットに格納する、請求項1または2に記載のハードウェア装置。
  5. 前記少なくとも1つのステータスビットは、キャリー、サイン、オーバーフロー、パリティ、ゼロ、及びアジャストの少なくとも1つに対する複数のビットを含む、請求項1から4のいずれか1項に記載のハードウェア装置。
  6. 前記命令は、条件付き分岐、条件付きジャンプ、条件付き移動、及び条件付きメモリオペレーションの1つである、請求項1から5のいずれか1項に記載のハードウェア装置。
  7. 前記命令を示すオペコードを含む前記命令は、前記少なくとも1つのステータスビットを、前記結果と共に、前記単一のデスティネーション物理格納位置に格納させる、請求項1から6のいずれか1項に記載のハードウェア装置。
  8. 前記命令を示すデスティネーションオペランドを含む前記命令は、前記少なくとも1つのステータスビットを、前記結果と共に、前記単一のデスティネーション物理格納位置に格納させる、請求項1から7のいずれか1項に記載のハードウェア装置。
  9. 命令をデコードするデコーダハードウェアと、
    前記デコーダハードウェアによってデコードされた前記命令に関連付けられた少なくとも1つのソースオペランドからデータを取得するオペランド取得ハードウェアと、
    少なくとも1つのソース物理レジスタのステータス条件の評価に基づいて、前記命令のオペレーションを条件に応じて実行すべく、前記デコードされた命令を実行する実行ハードウェアと、
    を備え、
    前記ソースオペランドは、データに加えて少なくとも1つのステータスビットを含み、
    前記命令は、前記ソース物理レジスタが少なくとも1つのステータスビット及びデータを格納することのインジケーションを含む、
    ハードウェア装置。
  10. 前記命令のアーキテクチャレジスタを物理レジスタにマッピングし、前記ハードウェア装置のステータスレジスタを前記物理レジスタにマッピングするレジスタリネーミングハードウェアをさらに備える、請求項9に記載のハードウェア装置。
  11. 前記ソース物理レジスタは、データを最下位ビットに格納し、前記ステータスビット最上位ビットに格納する、請求項9または10に記載のハードウェア装置。
  12. 前記ソース物理レジスタは、データを最上位ビットに格納し、前記ステータスビット最下位ビットに格納する、請求項9または10に記載のハードウェア装置。
  13. 少なくとも1つのステータスビットは、キャリー、サイン、オーバーフロー、パリティ、ゼロ、及びアジャストの少なくとも1つに対する複数のビットを含む、請求項9から12のいずれか1項に記載のハードウェア装置。
  14. 前記命令は、条件付き分岐、条件付きジャンプ、条件付き移動、及び条件付きメモリオペレーションの1つである、請求項9から13のいずれか1項に記載のハードウェア装置。
  15. 前記命令を示すオペコードを含む前記命令は、少なくとも1つのステータスビット及びデータを含む前記ソース物理レジスタからステータス情報を読み出す、請求項9から14のいずれか1項に記載のハードウェア装置。
  16. 前記命令は、デスティネーションオペランドを含む、請求項9から15のいずれか1項に記載のハードウェア装置。
  17. 前記命令は、オフセットオペランドを含む、請求項9から16のいずれか1項に記載のハードウェア装置。
  18. 命令をデコードするデコーダ手段と、
    前記デコーダ手段によってデコードされた前記命令に関連付けられた少なくとも1つのソースオペランドからデータを取得するオペランド取得手段と、
    少なくとも1つのステータスビットを含む結果を生成し、前記結果及び少なくとも1つのステータスビットを単一のデスティネーション物理格納位置に格納させるべく、前記デコードされた命令を実行する実行手段と、
    を備え、
    前記少なくとも1つのステータスビット及び結果は、単一の、物理レジスタの読み出しを通してアクセス可能であり、
    前記命令のオペコードまたはオペランドは、前記単一のデスティネーション物理格納位置に前記結果及び前記少なくとも1つのステータスビットを格納することを示す、
    ハードウェア装置。
  19. 前記命令のアーキテクチャレジスタを物理レジスタにマッピングし、前記ハードウェア装置のステータスレジスタを前記物理レジスタにマッピングするレジスタリネーミング手段をさらに備える、請求項18に記載のハードウェア装置。
  20. 前記物理レジスタは、データを最下位ビットに格納し、前記ステータスビット最上位ビットに格納する、請求項18または19に記載のハードウェア装置。
  21. 前記物理レジスタは、データを最上位ビットに格納し、前記ステータスビット最下位ビットに格納する、請求項18または19に記載のハードウェア装置。
  22. 前記少なくとも1つのステータスビットは、キャリー、サイン、オーバーフロー、パリティ、ゼロ、及びアジャストの少なくとも1つに対する複数のビットを含む、請求項18から21のいずれか1項に記載のハードウェア装置。
  23. 前記命令は、条件付き分岐、条件付きジャンプ、条件付き移動、及び条件付きメモリオペレーションの1つである、請求項18から22のいずれか1項に記載のハードウェア装置。
  24. 前記命令を示すオペコードを含む前記命令は、前記少なくとも1つのステータスビットを、前記結果と共に、前記単一のデスティネーション物理格納位置に格納させる、請求項18から23のいずれか1項に記載のハードウェア装置。
JP2016096457A 2015-06-27 2016-05-12 ハードウェア装置 Expired - Fee Related JP6253706B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/752,887 2015-06-27
US14/752,887 US20160378480A1 (en) 2015-06-27 2015-06-27 Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations

Publications (2)

Publication Number Publication Date
JP2017016640A JP2017016640A (ja) 2017-01-19
JP6253706B2 true JP6253706B2 (ja) 2017-12-27

Family

ID=56117513

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016096457A Expired - Fee Related JP6253706B2 (ja) 2015-06-27 2016-05-12 ハードウェア装置

Country Status (8)

Country Link
US (1) US20160378480A1 (ja)
EP (1) EP3109754A1 (ja)
JP (1) JP6253706B2 (ja)
KR (1) KR20170001578A (ja)
CN (1) CN106293628A (ja)
BR (1) BR102016012096A2 (ja)
DE (1) DE102016006560A1 (ja)
TW (1) TW201712530A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6795992B2 (ja) 2017-02-01 2020-12-02 西川ゴム工業株式会社 防音材
US11366663B2 (en) * 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
CN111338640B (zh) * 2020-02-15 2022-06-07 苏州浪潮智能科技有限公司 一种可动态调整的非对称指令重链接方法和装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6006324A (en) * 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US6604190B1 (en) * 1995-06-07 2003-08-05 Advanced Micro Devices, Inc. Data address prediction structure and a method for operating the same
US5864707A (en) * 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US6263416B1 (en) * 1997-06-27 2001-07-17 Sun Microsystems, Inc. Method for reducing number of register file ports in a wide instruction issue processor
US6230262B1 (en) * 1998-07-31 2001-05-08 Advanced Micro Devices, Inc. Processor configured to selectively free physical registers upon retirement of instructions
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7386705B2 (en) * 2002-08-27 2008-06-10 Mosaid Technologies Inc. Method for allocating processor resources and system for encrypting data
GB2402763B (en) * 2003-06-13 2006-03-01 Advanced Risc Mach Ltd Data access program instruction encoding
US7234044B1 (en) * 2003-12-03 2007-06-19 Altera Corporation Processor registers having state information
JP5168143B2 (ja) * 2006-06-15 2013-03-21 日本電気株式会社 プロセッサ、および、命令制御方法
JP4228241B2 (ja) * 2006-12-13 2009-02-25 ソニー株式会社 演算処理装置
GB2488980B (en) * 2011-03-07 2020-02-19 Advanced Risc Mach Ltd Address generation in a data processing apparatus
US9367314B2 (en) * 2013-03-15 2016-06-14 Intel Corporation Converting conditional short forward branches to computationally equivalent predicated instructions
US9304940B2 (en) * 2013-03-15 2016-04-05 Intel Corporation Processors, methods, and systems to relax synchronization of accesses to shared memory

Also Published As

Publication number Publication date
KR20170001578A (ko) 2017-01-04
US20160378480A1 (en) 2016-12-29
CN106293628A (zh) 2017-01-04
EP3109754A1 (en) 2016-12-28
BR102016012096A2 (pt) 2017-11-07
DE102016006560A1 (de) 2016-12-29
TW201712530A (zh) 2017-04-01
JP2017016640A (ja) 2017-01-19

Similar Documents

Publication Publication Date Title
JP6143872B2 (ja) 装置、方法、およびシステム
JP6340097B2 (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
JP6373425B2 (ja) 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
JP5829714B2 (ja) マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム
KR20170028913A (ko) 다수의 테스트 소스를 사용한 or-테스트 및 and-테스트 기능을 제공하는 융합가능 명령어 및 논리
JP5985526B2 (ja) システムコールのためのロバスト且つ高性能な命令
KR101966713B1 (ko) 마스크 레지스터에서의 비트들을 반전 및 치환하기 위한 장치 및 방법
TW201403472A (zh) 最佳化暫存器初始化操作
JP2017538213A (ja) アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置
KR101723711B1 (ko) 조건부 쇼트 포워드 브랜치들을 산술적으로 동등한 술어적 명령어들로 변환
JP2021174513A (ja) データ依存脆弱分岐の機会主義的再誘導のための命令セットアーキテクチャベース自動負荷追跡
JP6253706B2 (ja) ハードウェア装置
JP2018500659A (ja) 高速ベクトルによる動的なメモリ競合検出
US20140189330A1 (en) Optional branches
US10877765B2 (en) Apparatuses and methods to assign a logical thread to a physical thread
CN103270489A (zh) 用于进行段寄存器读和写而不管特权等级的系统、装置和方法
JP2017538215A (ja) 逆分離演算を実行するための命令及びロジック
US9710389B2 (en) Method and apparatus for memory aliasing detection in an out-of-order instruction execution platform
US20220413859A1 (en) System, apparatus and methods for performant read and write of processor state information responsive to list instructions
US20220413860A1 (en) System, Apparatus And Methods For Minimum Serialization In Response To Non-Serializing Register Write Instruction
JP5753603B2 (ja) データ要素内のビットをゼロ化するためのシステム、装置、および方法
US20230315501A1 (en) Performance Monitoring Emulation in Translated Branch Instructions in a Binary Translation-Based Processor
CN112579160A (zh) 用于具有减少的硬件要求的存储配对的装置和方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170927

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171128

R150 Certificate of patent or registration of utility model

Ref document number: 6253706

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees