JP2011138499A - キャリーフラグの読み出しを伴わずに実行を完了する回転命令 - Google Patents

キャリーフラグの読み出しを伴わずに実行を完了する回転命令 Download PDF

Info

Publication number
JP2011138499A
JP2011138499A JP2010272961A JP2010272961A JP2011138499A JP 2011138499 A JP2011138499 A JP 2011138499A JP 2010272961 A JP2010272961 A JP 2010272961A JP 2010272961 A JP2010272961 A JP 2010272961A JP 2011138499 A JP2011138499 A JP 2011138499A
Authority
JP
Japan
Prior art keywords
rotation
flag
execution
instruction
rotation instruction
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
JP2010272961A
Other languages
English (en)
Other versions
JP5665221B2 (ja
Inventor
Vinodh Gopal
ゴパル、ヴィノド
James D Guilford
ディー. ギルフォード、ジェイムス
Gilbert M Wolrich
エム. ウォルリッチ、ギルバート
Wajdi K Feghali
エフ. フェガーリ、ワジディ
Erdinc Ozturk
オズターク、エルディンク
Martin G Dixon
ジー. ディクソン、マーティン
Sean P Mirkes
ピー. マークス、シーン
Bret L Toll
エル. トール、ブレット
Maxim Loktyukhin
ロクツキン、マキシム
Mark C Davis
シー. デイビス、マーク
Alexandre J Farcy
ジェー. ファーシー、アレクサンドレ
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 JP2011138499A publication Critical patent/JP2011138499A/ja
Application granted granted Critical
Publication of JP5665221B2 publication Critical patent/JP5665221B2/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/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/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/30098Register arrangements

Landscapes

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

Abstract

【課題】命令処理装置の実行部において、並列処理および/または投機的な実行を制限し、時間がかかるキャリーフラグの読み出しを伴うことなく、回転命令を実行できるようにする。
【解決手段】ソースオペランドと回転量とを示す回転命令を受信し(221)、回転命令が示すデスティネーションオペランドに、回転量で回転させたソースオペランドを有する結果を格納する(222)ことにより、キャリーフラグの読み出しを伴わずに回転命令の実行を完了する(223)。
【選択図】図2

Description

様々な別個の実施形態が、命令、該命令を実行する方法、該命令の実行ユニット、または該実行ユニットを含むデバイスに係る。特に、様々な別個の実施形態は、キャリーフラグの読み出しを伴わずに実行を完了する回転命令、該命令を実行する方法、該命令の実行ユニット、または該実行ユニットを含むデバイスに係る。
回転命令は通常、命令セットアーキテクチャ(ISA)に含まれている。回転命令によりデバイスはデータを回転させることができる。
公知の回転命令には、ROR−右回転命令が含まれる。ROR命令は、インテルアーキテクチャソフトウェア開発者用マニュアル第2巻:命令セットレファレンス、オーダ番号:243192、1999年で説明がなされている。
回転させるのに加え、ROR命令はさらにキャリーフラグの読み出しも行う。これら演算フラグの読み出しには概して時間がかかる。さらに、キャリーフラグを読み出す必要のあるケースはシリアライゼーションを増加させる傾向にあり、並列処理および/または投機的な実行を制限する傾向がある。
さらに、ROR命令はソースオペランドをデスティネーションオペランドで上書きする。ソースオペランドは、ROR命令の実行の完了時に破壊される。アプリケーションによっては、ソースオペランドの保存にさらなるデータ移動命令または処理が必要になる場合がある。これらのデータ移動命令または処理にはさらに時間がかかる。
データ処理においては速度および/または効率性が重要であることから、従来とは異なる新たな回転命令を設けると好適であると思われる。
本発明は、以下の記載を、本発明の実施形態を示す添付図面を参照しながら読むことで理解が深まる。
命令処理装置の例示的な実施形態のブロック図である。 回転命令の実施形態を処理する方法の実施形態のブロックフロー図である。 適切なフラグレジスタの特定の実施形態を表し、キャリーフラグ(CF)とオーバフローフラグ(OF)とを有するEFLAGSレジスタを示す。 適切な32ビットの汎用レジスタセットの一実施形態を示す。 適切な64ビットの汎用レジスタセットの別の実施形態を示す。 回転命令の特定の実施形態を表すRORX命令の記述を示す。 回転命令の特定の実施形態を表すRORX命令の擬似コード処理を示す。 適切なコンピュータシステムの第1の実施形態のブロック図である。 適切なコンピュータシステムの第2の実施形態のブロック図である。
以下の詳細な説明において命令実装の詳細、データの種類、レジスタの種類、レジスタの配置、プロセッサの種類、システム構成等、多くの特定の詳細を述べる。しかし、実施形態はこれら特定の詳細なしに実施可能である。また、公知の回路、構造、および技術等に関して、詳細に説明しないことにより、本発明の実施形態の本質を曖昧にしないようにしている箇所もある。
実施形態は、回転命令を実行し、キャリーフラグの読み出しを伴わずに回転命令の実行を完了する実行部を有する命令処理装置に係る。
図1は、命令処理装置100の例示的な実施形態のブロック図である。1以上の実施形態では、命令処理装置は、汎用プロセッサであってよい。プロセッサは、様々なCISC(complex instruction set computing)プロセッサ、様々なRISC(reduced instruction set computing)プロセッサ、様々なVLIW(very long instruction word)プロセッサ、これらの様々なハイブリッド、またはその他のプロセッサ全般のうちのいずれであってもよい。1以上の実施形態では、プロセッサは、カリフォルニア州サンタクララのインテルコーポレーション社製の汎用プロセッサであってよいが、これは必須要件ではない。インテルコーポレーション社製の汎用プロセッサの特定の例には、これらに限定はされないが、インテル(登録商標)コア(登録商標)i7プロセッサ・エクストリームエディション、インテル(登録商標)コア(登録商標)i7プロセッサ、インテル(登録商標)コア(登録商標)i5プロセッサ、インテル(登録商標)コア(登録商標)2エクストリームプロセッサ、インテル(登録商標)コア(登録商標)2クアッドプロセッサ、インテル(登録商標)コア(登録商標)2デュオプロセッサ、インテル(登録商標)ペンティアム(登録商標)プロセッサ、およびインテル(登録商標)セルロン(登録商標)プロセッサが含まれる。
また、命令処理装置は専用プロセッサであってもよい。適切な専用プロセッサの代表的な例には、これらに限定はされないが、ネットワークプロセッサ、通信プロセッサ、暗号化プロセッサ、グラフィックスプロセッサ、コプロセッサ、エンベデッドプロセッサ、およびデジタルシグナルプロセッサ(DSP)がほんの一例として含まれる。これらプロセッサもCISC、RISC、VLIW、これらの様々なハイブリッド、またはその他のプロセッサ全般に基づいていてよい。
また他の実施形態では、命令処理装置はコントローラ(例えばマイクロコントローラ)、または、命令処理機能を有するその他の種類のロジック回路であってよい。またさらなる実施形態では、命令処理装置は命令を実行する暗号化回路であってもよい。
図1に戻ると、利用中に命令処理装置は、回転命令102の一実施形態を受信することができる。一例では、回転命令は、メモリからあるいはソフトウェアから受信されてよい。回転命令は、命令処理装置が認識している機械命令または制御信号を表してよい。命令処理装置は、回転命令に応じて、および/または、回転命令が指定するように、データに回転処理を行い、機械命令に応じて、またはその結果として、回転された結果を格納する機能を有する専用の、または特別な回路、あるいは他のロジック(例えばハードウェアおよび/またはファームウェアと組み合わせられたソフトウェア)を有してよい。
示している命令処理装置の実施形態には、命令復号器104が含まれる。復号器は、回転命令を受信して復号することができる。復号器は、元の回転命令を反映する、あるいは、これから導出される、1以上のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、その他の命令、あるいはその他の制御信号を生成して出力することができる。復号器は、様々な異なるメカニズムを利用して実装することができる。適切なメカニズムの例には、これらに限定はされないが、マイクロコードROM、ルックアップテーブル、ハードウェア実装、PLA(programmable logic array)等が含まれる。
復号器は装置の必須のコンポーネントではない。1以上の他の実施形態では、装置はこの代わりに、命令エミュレータ、命令翻訳プログラム、命令モーファ、命令解釈プログラム、その他の命令変換ロジックを含むことができる。本技術分野では、様々な異なる種類の命令エミュレータ、命令モーファ、命令翻訳プログラム等が公知である。命令変換ロジックは回転命令を受信して、回転命令をエミュレート、翻訳、変形、解釈したり、回転命令を変換したりして、元の回転命令に対応する1以上の命令または制御信号を出力することができる。命令変換ロジックは、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせによる実装が可能である。場合によっては、命令変換ロジックの一部または全てが、命令処理装置の残りからオフダイの位置に設けられてもよい(例えば、別のダイとして、またはシステムメモリ内に設けられてもよい)。場合によっては、命令処理装置は復号器および命令変換ロジック両方を備えてもよい。
図1に戻ると、命令処理装置は実行ユニット106を含む。一例では、実行ユニットは、論理演算装置(arithmetic logic unit)、または回転処理を行う機能を有する別の種類の論理ユニットを含むことができる。実行ユニットは、回転ユニット108を含む。様々な種類の回転ユニット(例えばバレル回転器)が本技術分野で公知である。本発明の公知の回転回路またはユニットの特定のものに限定されない。
示されている実施形態では、実行ユニットは、復号器の出力に連結されている、さもなくば、これと通信可能状態である。「連結(couple)」という用語は、2以上のエレメントが直接的な電気接触または接続状態にあることを意味する場合がある。しかし「連結」という用語は、さらに、2以上のエレメントが直接的な接続状態にはないが、互いと協働または相互作用することも意味する(例えば間にコンポーネントを介在させることで)。一例を挙げると、復号器および実行ユニットが、これらの間に介在するオプションのバッファおよび/またはその他の本技術分野で公知であるコンポーネント(1または複数)によって、互いと連結される場合がこれに相当する。復号器が回転命令を復号した結果、実行ユニットは、回転命令を反映する、またはこれから導出される1以上のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、その他の命令あるいはその他の制御信号を受信して実行してよい。また実行ユニットは、上述した命令変換ロジックから命令または制御信号を受信して実行してよい。
1以上の実施形態では、実行ユニットは、ソースオペランド(SRC)と回転量とを示す回転命令102の結果、回転命令が示すデスティネーションオペランド(DEST)に結果を格納する機能を有してよく、この結果は、該回転量で回転させたソースオペランドを有している。1以上の実施形態では、回転命令は右回転命令であってよく、これによりデータが右に回転させられてよい。回転により最下位ビット(LSB)から外れたビットは、最上位ビット(MSB)へと回転またはラップバック(wrap back)させられてよい。また、回転命令は左回転命令であってもよい。回転中にデータは失われず、単に回転または再配置される。実行ユニットは、命令または回転命令から導出された他の制御信号を実行して、ソースオペランドに回転量分の回転処理を行う機能を有する回路または他の実行ロジック(例えばハードウェアおよび/またはファームウェアと組み合わせられたソフトウェア)を含むことができる。
回転命令は、ソースオペランドおよびデスティネーションオペランド、ならびに、回転量を暗示的に示す、および/または、明示的に指定することができる(例えば、1以上の専用フィールドまたはビットのセットにより)。適切なオペランドのソースおよび回転量の例には、レジスタ、メモリ、命令の即値、およびこれらの組み合わせが含まれてよい。様々な実施形態では、ソースオペランドおよびデスティネーションオペランドは16ビット、32ビット、または64ビットのオペランドであってよいが、これは必須ではない。
1以上の実施形態では、ソースオペランドおよびデスティネーションオペランドの一部または全てがレジスタセット110のレジスタに格納されていてよい。レジスタセットはレジスタファイルの一部であってよく、および潜在的に他のレジスタ(例えばステータスレジスタ、フラグレジスタ等)を含んでよい。レジスタは、データ格納に利用されうる格納位置またはデバイスであってよい。レジスタは物理的に実行ユニットとともにダイ上に配置されることがある。レジスタはプロセッサの外部から、またはプログラマの視点から可視であってよい。例えば命令は、レジスタに格納されているオペランドを特定することができる。本明細書で記載するデータの格納および提供が可能でありさえすれば、様々な異なる種類のレジスタを利用することができる。レジスタはリネームされてもされなくてもよい。適切なレジスタの例には、これらに限定はされないが、専用物理レジスタ、レジスタのリネームを行って動的に割り当てられる物理レジスタ、専用物理レジスタおよび動的に割り当てられる物理レジスタの組み合わせ等が含まれる。また、ソースオペランドおよびデスティネーションオペランドのうち1以上を、レジスタとは異なる格納位置に(例えばシステムメモリのある位置に)格納することもできる。
さらに図の説明に戻ると、プロセッサその他の種類の命令実行装置はしばしば複数の演算フラグ114を含むことができる。演算フラグは少なくとも1つのキャリーフラグ116を含む。1以上の実施形態では、フラグは、レジスタ112(ステータスレジスタ、フラグレジスタ、または条件コードレジスタ(CCR)等)に含まれていてよい。
プロセッサおよびその他の様々な種類のロジックデバイスがしばしば演算フラグを利用する。フラグは1以上のビットを、しばしばレジスタ内に含みうる。フラグはレジスタ内のビットである必要はない。フラグはフリップフロップ回路を含んでよい。ビットフラグはバイナリ値(例えばバイナリ1またはバイナリ0)を格納してよい。複数のビットがバイナリ値のシーケンスまたはコードを格納することができる。これらバイナリ値またはバイナリ値のシーケンスは、フラグの異なる値を表してよい。これらフラグの異なる値は、プロセッサまたはその他のロジックデバイスに割り当てられてもよいし、その意味が暗に示されてもよい。フラグは様々に異なる目的に利用されてよい。フラグを、処理のステータス、状態、条件、または結果をプロセッサその他のロジックデバイス内に記録する目的に利用する場合もある。
キャリーフラグは、プロセッサその他のロジックデバイスに通常設けられる公知の種類の演算フラグである。キャリーフラグは、算術演算におけるオーバフローがないかを示すのに利用することができる。例えば、キャリーフラグは、前の演算中にオーバフローが生じた場合に第1の値を有してよく、そのようなオーバフローがない場合には、キャリーフラグは第2の値を有してよい。キャリーフラグは、算術演算によって、任意のレジスタまたは格納位置のビット数よりも大きさが大きい結果が生成されたことを示す目的に利用されてもよい。例えば1以上の実施形態では、キャリーフラグは、算術演算による結果の最上位ビットからのキャリーまたはボローが生じた場合に1に設定されてよいシングルビットであってよく、そうではない場合にはキャリーフラグは0に設定されてよい。キャリーフラグは、加算または減算といった算術演算でよく利用される。
1以上の実施形態では、演算フラグはオーバフローフラグを含んでよい。オーバフローフラグは、プロセッサその他のロジックデバイスでよく利用される別の公知の種類の演算フラグである。オーバフローフラグはしばしばレジスタのシングルビットである。オーバフローフラグは大まかにいって、キャリーフラグの符号付きバージョンに相当すると言える。オーバフローは、演算中に演算のオーバフローが生じたことを示す。オーバフローフラグは、最上位ビット(MSB)が設定される、またはクリアされるときに設定される。オーバフローフラグは、結果が過剰に大きな正の数である場合、または過剰に小さい負の数である場合に設定することで、デスティネーションオペランドに収めることができるようになる。オーバフローフラグを利用することで、前の演算が、それを生成したオペランドの符号と不一致である符号の符号付きの数を生じたことを示すことができる。例えば、オーバフローフラグは、2つの正の数の加算が負の結果を生じた場合、または、2つの負の数の加算が正の結果を生じた場合に設定されてよい。キャリーフラグおよびオーバフローフラグの機能および利用法についての完全な理解は、本明細書の実施形態を理解しようとする上ではあまり重要ではない。
1以上の実施形態では、演算フラグは、1以上の他の種類の演算フラグを含むことができる。時折プロセッサまたは他のロジックデバイスに含まれることがある他の演算フラグには、符号フラグ、ゼロフラグ、補助キャリーフラグ、パリティフラグ、またはこれらの組み合わせが含まれる。これらフラグの全てが全てのプロセッサその他のロジックデバイスに含まれるわけではない。加えて、これらの様々なフラグに対して別の名称が利用される場合もある。
1以上の実施形態では、実行ユニットは、キャリーフラグの読み出しを伴わずに回転命令の実行を完了する機能を有してよい。これは図面では矢印により大きな「X」でコンセプトとして表されている。
1以上の実施形態では、実行ユニットは、オーバフローフラグの読み出しを伴わずに回転命令の実行を完了する機能を有してよい。1以上の実施形態では、実行ユニットは、キャリーフラグまたはオーバフローフラグの書き込みを伴わずの回転命令の実行を完了する機能を有してよい。1以上の実施形態では、実行ユニットは、キャリーフラグ、オーバフローフラグ、符号フラグ、ゼロフラグ、補助キャリーフラグ、またはパリティフラグのいずれの読み出しも伴わずに、回転命令の実行を完了する機能を有してよい。1以上の実施形態では、実行ユニットは、キャリーフラグ、オーバフローフラグ、符号フラグ、ゼロフラグ、補助キャリーフラグ、またはパリティフラグのいずれの読み出しも書き込みも伴わずに、回転命令の実行を完了する機能を有してよい。1以上の実施形態では、いずれの演算フラグの読み出しも書き込みも伴わずに、回転命令の実行を完了する機能を有してよい。また1以上の実施形態では、いずれの演算フラグの読み出しを伴わずに、全ての演算フラグを書き込む機能を有してよい。
説明を曖昧にしないようにする意図から、比較的簡単な命令処理装置を示し、説明している。しかし他の実施形態では複数の実行ユニットを利用することもできることは理解されたい。例えば、装置は、複数の異なる種類の実行ユニット(例えば論理ユニット、論理演算装置(ALU)、演算装置、整数ユニット(integer unit)等)を含んでよい。これらユニットのうち少なくとも1つが、本明細書で開示する回転命令の一実施形態に応じたものであってよい。また他の実施形態には、複数のコア、論理プロセッサ、または実行エンジンが含まれてよい。本明細書で開示する回転命令を実行する機能を有する実行ユニットは、少なくとも1つ、少なくとも2つ、殆どあるいは全てのコア、論理プロセッサ、または実行エンジン内に含まれてよい。
命令処理装置はさらに、オプションとして1以上の公知の他のコンポーネントを含んでもよい。例えば、他の実施形態では、オプションとして命令フェッチロジック、プレデコードロジック、スケジュールロジック、リオーダ・バッファ、分岐予測ロジック、退避ロジック、レジスタ・リネームロジック、またはこれらの組み合わせを含んでよい。これらのコンポーネントは、従来の方法での実装、または、当業者であれば本開示に基づいて想到可能な微調整を加えることによる実装が可能である。本実施形態を理解する目的にはこれ以上これらのコンポーネントの詳述は不要であるが、これらコンポーネントの説明は刊行物にあるのでそれを参照されたい。当技術分野ではこれらコンポーネントの文字通り多くの異なる組み合わせおよび構成が公知である。本発明の範囲は、これら公知の組み合わせおよび構成のいずれにも限定はされない。実施形態は、これらオプションであるコンポーネントがあってもなくても実装可能である。
図2は、回転命令の実施形態を処理する方法220の実施形態のブロックフロー図である。様々な実施形態では、方法は、汎用プロセッサ、専用プロセッサ(例えばグラフィックスプロセッサまたはデジタルシグナルプロセッサ(DSP))、ハードウェアアクセラレータ(例えば暗号化アクセラレータ)、あるいは、別の種類のロジックデバイスまたは命令処理装置により行うことができる。
回転命令は、ブロック221で受信されてよい。回転命令はソースオペランドおよび回転量を示してよい。
ブロック222で、回転命令が示すデスティネーションオペランドに結果を格納してよい。結果は、回転量で回転させたソースオペランドを有してよい。
回転命令の実行はブロック223で完了してよい。1以上の実施形態では、回転命令の実行は、キャリーフラグの読み出しを伴わずに完了してよい。
1以上の実施形態では、実行ユニットは、オーバフローフラグの読み出しを伴わずに回転命令の実行を完了する機能を有してよい。1以上の実施形態では、実行ユニットは、キャリーフラグまたはオーバフローフラグの書き込みを伴わずの回転命令の実行を完了する機能を有してよい。1以上の実施形態では、実行ユニットは、キャリーフラグ、オーバフローフラグ、符号フラグ、ゼロフラグ、補助キャリーフラグ、またはパリティフラグのいずれの読み出しも伴わずに、回転命令の実行を完了する機能を有してよい。実行ユニットは、キャリーフラグ、オーバフローフラグ、符号フラグ、ゼロフラグ、補助キャリーフラグ、またはパリティフラグのいずれの読み出しも書き込みも伴わずに、回転命令の実行を完了する機能を有してよい。1以上の実施形態では、いずれの演算フラグの読み出しも書き込みも伴わずに、回転命令の実行を完了する機能を有してよい。また1以上の実施形態では、いずれの演算フラグの読み出しを伴わずに、全ての演算フラグを書き込む機能を有してよい。
キャリーフラグの読み出しを伴わない回転命令の実行の完了、場合によってはキャリーフラグまたはオーバフローフラグのいずれの読み出しも伴わない回転命令の実行の完了、また、場合によってはいずれの演算フラグの読み出しも伴わない回転命令の実行の完了により、回転命令の実行速度を上げることができる。キャリーフラグの読み出しには時間がかかる。さらには、読み出されたキャリーフラグその他の演算フラグを回転命令が利用しないことも多い。従ってこれらフラグの読み出しには時間がかかり、しかもこれらのフラグを利用しない場合も多いということなので、キャリーフラグの読み出しおよび/またはキャリーフラグおよび1以上の他のフラグの読み出しを行わないことにより、回転命令の実行速度を上げることができる。
加えて、キャリーフラグの読み出しを伴わない回転命令の実行の完了、場合によってはキャリーフラグまたはオーバフローフラグのいずれの読み出しも伴わない回転命令の実行の完了、また、場合によってはいずれの演算フラグの読み出しも伴わない回転命令の実行の完了により、フラグに対する依存性によるシリアライゼーションを低減することができる。これらシリアライゼーションを低減させることで並列処理、アウトオブオーダ実行、および/または、投機的な実行のより良い利用が可能となり、多くのアルゴリズムの速度を上げることができる。
回転命令は、フラグを修正する他の命令とともにアルゴリズムに組み込まれることが多い。例えば回転命令は、AND命令、XOR命令等の論理命令とともにアルゴリズムに組み込まれることが多い。通常これらの論理命令はフラグを更新する。公知のROR命令はフラグを読み出すことができるので、フラグに対する依存性があるということになる。この結果、通常、ROR命令は、実行前に、あるいは少なくとも完全実行前に、前の論理命令の実行が完了するのを待つ必要がある。これによりフラグに対する依存性によるシリアライゼーションが生じる可能性がある。これはデータに対する依存性によるものではなく、フラグに対する依存性によるものである点に留意されたい。ハッシュおよび暗号化アルゴリズム等の、いくらかのアルゴリズムにおいては、論理および回転命令の両方が比較的大きな割合で利用される傾向がある。従ってこれらアルゴリズムにおけるフラグに依存するシリアライゼーションの量は比較的高いことが多い。
これらシリアライゼーションは並列処理、アウトオブオーダ実行、および/または投機的な実行を妨害する傾向がある。例えばアウトオブオーダの機械は、データに対する依存性が全くなかったとしても、論理命令の前に公知のROR命令の実行を行うことができない。これにより、これらアルゴリズムの実行速度が遅くなる傾向にある。
しかし上述したように1以上の実施形態では、回転命令は、キャリーフラグの読み出しを伴わずに完了する場合があり、場合によってはキャリーフラグまたはオーバフローフラグの読み出しを伴わずに完了する場合があり、または、場合によってはいずれの演算フラグの読み出しも伴わずに完了する場合がある。これによってフラグ(1または複数)に対する依存性が低減する場合があり、回転命令が論理命令またはフラグを修正する他の命令とともに利用されるアルゴリズムにおけるシリアライゼーションの低減につながることがある。この結果、並列処理、アウトオブオーダ実行、および/または、投機的な実行からより大きな利点を得ることができる。これにより、ハッシュ、暗号化、その他のアルゴリズムの速度および/または効率が向上する傾向にある。
1以上の実施形態では、回転命令はオペランドの定義を有すことができ、さらに様々なアルゴリズムの実行速度を上げることができる。前に、公知のROR命令が、ソースオペランドをデスティネーションオペランドで上書きする、と述べたことを想起されたい。この結果、ソースオペランドを移動させない限り(MOVその他の移動命令により)、あるいは保存しない限り、ROR命令を実行させると、ソースオペランドはデスティネーションオペランドで上書きされてしまう。言い換えるとソースオペランドが破壊される。しかしアルゴリズムの中には、回転命令の実行以外にもソースオペランドを必要とするものがある。従ってこれらのアルゴリズムはさらなるMOVその他の移動命令、または、ソースオペランドを保存する他の種類の命令を含む場合が多い。極端なケースでは、これらの追加される命令の数がかなり重要になる場合もある。これらの追加される命令は復号が必要であり、ひいてはバッファリングされて実行される必要がある場合がある。
1以上の実施形態では、回転命令はソースオペランドを明示的に指定し、デスティネーションオペランドを明示的に指定する。これにより、異なるレジスタその他の格納位置がソースオペランドおよびデスティネーションオペランドにより明示的に指定されるので、ソースオペランドをデスティネーションオペランドで上書きしてしまうことがなくなり好適である。この結果、回転命令の完了時にソースオペランドおよびデスティネーションオペランドの両方を利用可能とすることができる。これは幾らかの利点を生じる可能性がある。まず第1に、データ移動命令、あるいはソースオペランドを保存するその他の種類の命令を回避することができる場合がありうる。これにより復号、ひいてはバッファリングおよび実行が必要となる命令の数を低減させることができる。第2に、復号されたストリームバッファ(DSB)等を利用する場合、命令の数を低減させることで、復号された命令のループをDSB内に収めることができるようになる。これにより、速度を制限する復号処理を回避することで処理速度を上げることができるようになるという利点が生じる。
回転命令を多用する傾向がある2つの分野がハッシュおよび暗号化である。過去数年の間に、ハッシュおよび暗号化の利用は両方とも顕著に増加した。益々多くのインターネットその他のネットワーク処理が暗号化によりセキュアなものとされている。この結果、専用暗号化アクセラレータ、エンベデッド暗号化プロセッサ、数多くの接続をサポートするサーバ等が、かなり頻繁にこのような暗号化アルゴリズムを実行しうる。従ってこれらデバイスの性能は、これら暗号化アルゴリズムを実行するときの速度および/または効率により大きな影響を受けうる。これよりは程度は低いではあろうが、デスクトップおよびラップトップコンピュータその他のデバイスも、これらの暗号化アルゴリズム等を実行する。加えて、ある種のハッシュおよび暗号化アルゴリズムにおける回転命令の比率は比較的高い傾向にある。例えば、あるハッシュおよび暗号化アルゴリズムにおいては、命令のうち10%以上が回転命令である。この結果、回転命令の実行速度を上げることで、アルゴリズムの実行速度全体に大きな影響が出てくる場合がある。もちろん回転命令はハッシュおよび暗号化以外の幅広い用途がある(例えば、データ圧縮、伸張、データスクランブル、デスクランブル等)。
回転量に関しては、回転命令の様々な実施形態が、様々な異なる方法で回転量を指定することができる。1以上の実施形態では、回転命令は、即値により回転量を示す、または指定する。即値は、回転命令の一部である、または回転命令に含まれるものとして直接符号化されるオペランドを表すことができる。即値バイトの値は、imm8で表されることが多い。
別のオプションとしては、1以上の実施形態で、回転命令は、回転量を有する第2のソースオペランドを暗示的に示すことができる。例えば、回転量は、暗示的なレジスタその他の格納位置に格納することができる。特定の実施形態では、暗示的なレジスタをCLと称される汎用レジスタとすることができる。
また別のオプションとしては、1以上の実施形態で、回転命令は、回転量を有する第2のソースオペランド(レジスタ等)を明示的に指定することができる。例えば、1以上の実施形態では、回転命令は、オプションとしてVEX符号化を利用することができる。VEX符号化によって命令は、追加オペランドを明示的に指定することができる。特定の例においては、回転命令は演算DEST=ROTATE(SRC by SRC2)を特定してよい。VEXのさらなる詳細は、必要に応じて、インテル(登録商標)64およびIA−32アーキテクチャソフトウェア開発者用マニュアル第2A巻:命令セットレファレンス、A−M、オーダ番号:253666−032US,2009年9月を参照されたい。
図3は、適切なフラグレジスタの特定の実施形態を表すEFLAGSレジスタ330を示す。この特定のレジスタおよびこれらの特定のフラグは当然ながら必須ではない。
EFLAGSレジスタは32ビットのレジスタであり、一群のステータスフラグ、制御フラグ、および一群のシステムフラグを含む。ステータスフラグには、キャリーフラグ(CF、ビット0)、パリティフラグ(PF、ビット2)、補助キャリーフラグ(AF、ビット4)、ゼロフラグ(ZF、ビット6)、符号フラグ(SF、ビット7)、およびオーバフローフラグ(OF、ビット11)が含まれる。
システムフラグには、トラップフラグ(TF、ビット8)、割り込みイネーブルフラグ(IF、ビット9)、I/O特権レベル(IOPL、ビット12−13)、ネストタスク(NT、ビット14)、再開フラグ(RF、ビット16)、仮想−8086モード(VM、ビット17)、位置合わせチェック(AC、ビット18)、仮想割り込みフラグ(VIF、ビット19)、仮想割り込み待ち状態(VIP、ビット20)、およびIDフラグ(ID、ビット21)が含まれる。制御フラグには、方向フラグ(DF、ビット10)が含まれる。EFLAGSのビット22−31はリザーブされている。
EFLAGSレジスタは、前の16ビットのFLAGSレジスタを引き継いだものである。さらに64ビットモードのプロセッサのEFLAGSレジスタは、RFLAGSレジスタに引き継がれ、64ビットに拡張されている。RFLAGSの下位32ビットはEFLAGSと同じである。FLAGS、EFLAGS、およびRFLAGSレジスタそれぞれにおいて、キャリーフラグ(CF)はビット0であり、オーバフローフラグ(OF)はビット11である。EFLAGS/RFLAGSレジスタ、およびキャリーフラグのさらなる記述に関しては、インテル(登録商標)64およびIA−32アーキテクチャソフトウェア開発者用マニュアル第1巻:基本アーキテクチャ、オーダ番号:253665−032US、2009年9月を参照されたい。
1以上の実施形態では、回転命令は、汎用レジスタセット内のソースオペランドおよび/またはデスティネーションオペランドを示してよい。さらにこれらコンセプトを示すべく、様々なx86アーキテクチャプロセッサで利用可能な適切な汎用レジスタの例示的な実施形態を示すが、これら特定のレジスタは当然ながら必須ではない。
図4は、適切な32ビットの汎用レジスタセット432の一実施形態を示す。32ビットのレジスタセットは、8個の32ビットまたはダブルワードの汎用レジスタを含む。これらレジスタは、EAX、EBX、ECX、EDX、ESI、EDI、EBP、およびESPと称される。これら32ビットのレジスタはさらに、16ビットおよび8ビットモードでアドレス指定可能である。EAX、EBX、ECX、およびEDXレジスタの下位の16ビットは、AX、BX、CX、およびDXとそれぞれ称される。一例では、レジスタBX、CX、およびDXにはそれぞれ16ビットのワード符号なし整数を格納することができる。レジスタEAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP、R8D−R15Dには、32ビットのダブルワードの符号なし整数を格納することができる。
図5は、適切な64ビットの汎用レジスタセット534の別の実施形態を示す。64ビットのレジスタセットは16個の64ビットまたはクワッドワードの汎用レジスタを含む。これらレジスタは、RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP、R8、R9、R10、R11、R12、R13、R14、およびR15と称される。これらレジスタは32ビットモードで32ビットオペランドに対して動作可能であり、64ビットモードで64ビットオペランドに対して動作可能である。RAX、RBX、RCX、RDX、RSI、RDI、RBP、およびRSPレジスタの下位32ビットが、それぞれEAX、EBX、ECX、EDX、ESI、EDI、EBP、およびESPレジスタに対応する。レジスタR8−R15の下位32ビットはさらに32ビットモードでアドレス指定可能であり、R8D−R15Dと称される。一例では、RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP、またはR8D−R15Dレジスタには、64ビットのクワッドワードの符号なし整数を格納することができる。
汎用レジスタのさらなる記述に関しては、必要に応じて、インテル(登録商標)64およびIA−32アーキテクチャソフトウェア開発者用マニュアル第1巻:基本アーキテクチャ、オーダ番号:253665−032US、2009年9月を参照されたい。これら特定のレジスタはあくまで例示であり、必須ではない。
特定の実施形態における回転命令はRORX−フラグ命令に影響を与えない右回転論理である。RORX命令は2つのオペランドの命令であり、その両方が明示的なオペランドである。表1にRORX命令用の命令オペランド符号化を示す。
Figure 2011138499
オペランド1は明示的に指定されており、32ビットモードの命令については32ビットの汎用レジスタ(reg)に、64ビットモードの命令については64ビットの汎用レジスタにあってよい。オペランド1に対しては書き込み(W)が許されている。
オペランド2は明示的に指定されており、32ビットモードの命令については32ビットの汎用レジスタ(r)またはメモリ(m)、64ビットモードの命令については64ビットの汎用レジスタまたはメモリにあってよい。オペランド2に対しては読み出し(R))が許されている。
オペランド3およびオペランド4はRORXでは利用できない。RORXは、回転量を指定する即値バイト(imm8)を有する。
図6は、回転命令の特定の実施形態を表すRORX命令の記述を示す。16ビットのオペランドサイズは可能ではあるが、現在は符号化することができない。
図7は、回転命令の特定の実施形態を表すRORX命令の擬似コード処理を示す。SRCは明示的に指定されたソースオペランドのことであり、DESTはデスティネーションオペランドのことであり、imm8は、回転量を指定するのに利用される即値バイトのことであり、シンボル「>>」は右シフトのことであり、シンボル「<<」は左シフトのことであり、シンボル「|」はビットワイズORのことである。この図は、回転を2つのシフトとして捕らえることができることを示している。
いずれのフラグもRORXの影響を受けない。RORXにはSIMD浮動小数点に関する例外は存在しない。オペコード、符号化、REX、およびVEXプレフィックスのさらなる記述に関しては、インテル(登録商標)64およびIA−32アーキテクチャソフトウェア開発者用マニュアル第2A巻:命令セットレファレンス、A−M、オーダ番号:253666−032US、2009年9月を参照されたい。
1以上の実施形態には、機械(例えば実行ユニットまたはプロセッサ)により実行されるとデータ回転処理を行い、キャリーフラグの読み出しを伴わずに実行を完了する回転命令を格納した、有形の機械アクセス可能な、および/または、機械可読媒体を含む製品が含まれる。有形媒体は1以上の固体材料を含んでよい。媒体は、例えば機械アクセス可能な形態で情報を提供(例えば格納)するメカニズムを含むことができる。例えば、媒体はオプションとして記録可能媒体(例えばフロッピー(登録商標)ディスク、光格納媒体、光ディスク、CD−ROM,磁気ディスク、光磁気ディスク、ROM、PROM、EPROM、EEPROM、RAM、SRAM、DRAM、フラッシュメモリ、およびこれらの組み合わせ)を含むことができる。
適切な機械には、これらに限られないが、ほんの数例を挙げると、実行ユニット、汎用プロセッサ、専用プロセッサ(例えばグラフィックスプロセッサおよび暗号化プロセッサ)、暗号化アクセラレータ、ネットワーク通信プロセッサ、コンピュータシステム、ネットワークデバイス、モデム、PDA,携帯電話機、および、幅広い範囲の他の電子デバイスが1以上の実行ユニットとともに含まれる。
また別の実施形態は、実行ユニットを有する、および/またはここで開示する方法を実行するコンピュータシステム、エンベデッドシステム、その他の電子デバイスに係る。
図8は、適切なコンピュータシステム801の第1の実施形態のブロック図である。コンピュータシステムはプロセッサ800を含む。プロセッサは、少なくとも1つの回転命令802を実行する機能を有する少なくとも1つの実行ユニット806を含む。
プロセッサは、バス(例えばフロントサイドバス)または他のインターコネクト880を介してチップセット881に連結される。インターコネクトは、プロセッサと、システムの他のコンポーネントとの間におけるデータ信号のやりとりをチップセット経由で行うときに利用可能である。
チップセットは、メモリコントローラハブ(MCH)882として知られているシステムロジックチップを含む。MCHは、フロントサイドバスまたは他のインターコネクト880に連結される。
メモリ886はMCHに連結される。様々な実施形態では、メモリは、RAMを含むことができる。DRAMは、一部の(全てではない)コンピュータシステムで利用されるRAMの一例である。図示されているように、メモリは、命令(例えば1以上の回転命令)887およびデータ888を格納するために利用することができる。
MCHにはコンポーネントインターコネクト885も連結される。1以上の実施形態では、コンポーネントインターコネクトは、1以上のPCIe(peripheral component interconnect express)インタフェースを含むことができる。コンポーネントインターコネクトは、他のコンポーネントを、システムの残りのコンポーネントに、チップセット経由で連結することができる。これらコンポーネントの一例は、グラフィックチップあるいは他のグラフィックデバイスであるが、これはオプションであり必須ではない。
チップセットも、I/O(入力/出力)コントローラハブ(ICH)884を含む。ICHは、ハブインタフェースバスその他のインターコネクト883を介してMCHに連結される。1以上の実施形態では、バスその他のインターコネクト883はDMI(Direct Media Interface)を含むことができる。
ICHにはデータ格納装置889が連結される。様々な実施形態では、データ格納装置には、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、CD−ROMデバイス、フラッシュメモリデバイス等、またはこれらの組み合わせが含まれてよい。
ICHにはさらに、第2のコンポーネントインターコネクト890が連結される。1以上の実施形態では、第2のコンポーネントインターコネクトは、1以上のPCIeインタフェースを含むことができる。第2のコンポーネントインターコネクトは、様々な種類のコンポーネントを、システムの残りのコンポーネントに、チップセット経由で連結することができる。
ICHにはまたさらに、シリアル拡張ポート891が連結される。1以上の実施形態では、シリアル拡張ポートは、1以上のUSB(universal serial bus)ポートを含むことができる。シリアル拡張ポートは、様々な他の種類の入力/出力デバイスを、システムの残りのコンポーネントにチップセット経由で連結することができる。
ICHにオプションとして連結可能なこの他のコンポーネントの幾らかの例には、これらに限定はされないが、オーディオコントローラ、無線トランシーバ、およびユーザ入力デバイス(例えばキーボード、マウス)が含まれる。
ICHにはさらにネットワークコントローラが連結される。ネットワークコントローラは、システムをネットワークに連結することができる。
1以上の実施形態では、コンピュータシステムは、ワシントン州Redmondのマイクロソフトコーポレーション社から入手可能なWINDOWS(登録商標)オペレーティングシステムのバージョンを実行することができる。また他のオペレーティングシステム(例えばUNIX(登録商標)、Linux(登録商標)、またはエンベデッドシステム)の利用も可能である。
これは適切なコンピュータシステムの一例にすぎない。例えば、1以上の他の実施形態では、プロセッサがマルチコアを有してもよい。別の1以上の実施形態では、MCH882はプロセッサ800に物理的にオンダイに集積されていてよく、プロセッサを直接メモリ886に、集積されたMCHを介して連結することができる。また別の1以上の実施形態では、他のコンポーネントをプロセッサにオンダイに集積して、例えばシステムオンチップ(SoC)デザインを提供することができる。さらに別の1以上の実施形態では、コンピュータシステムが複数のプロセッサを有することができる。
図9は、適切なコンピュータシステム901の第2の実施形態のブロック図である。第2の実施形態は、前段で説明した第1のコンピュータシステム例にいくらか類似している。説明を簡潔にするべく、以下では類似点を全て繰り返すのではなく、差異を中心に説明する。
上述した第1の実施形態と同様に、コンピュータシステムは、プロセッサ900と、I/Oコントローラハブ(ICH)984を有するチップセット981とを含む。さらに第1の実施形態と同様に、コンピュータシステムは、チップセットに連結された第1のコンポーネントインターコネクト985、ICHに連結された第2のコンポーネントインターコネクト990、ICHに連結されたシリアル拡張ポート991、ICHに連結されたネットワークコントローラ992、およびICHに連結されたデータ格納装置989を含む。
この第2の実施形態では、プロセッサ900はマルチコアプロセッサである。マルチコアプロセッサは、プロセッサコア994−1から994−Mを含み、ここでMは2以上の整数であってよい(例えば、2、4、7、あるいはこれより大きい整数)。各コアは、ここに開示する命令の少なくとも1つの実施形態を実行する機能を有する少なくとも1つの実行ユニットを含むことができる。図示されているように、コア−1はキャッシュ995(例えばL1キャッシュ)を含む。他のコア各々も同様に専用コアを含む。プロセッサコアは、単一の集積回路(IC)チップに実装されてよい。
プロセッサはさらに少なくとも1つの共有キャッシュ996を含む。共有キャッシュは、プロセッサの1以上のコンポーネント(例えばコア)が利用するデータ(例えば命令)を格納することができる。例えば、共有キャッシュは、メモリ986にローカルにデータをキャッシュすることにより、プロセッサのコンポーネントからのアクセスをより迅速に行うことができる。1以上の実施形態では、共有キャッシュには1以上の中間レベルのキャッシュ(レベル2(L2)、レベル3(L3)、レベル4(L4))、あるいはその他のレベルのキャッシュ、最終のレベルのキャッシュ(LLC)、および/または、これらの組み合わせが含まれてよい。
プロセッサコアおよび共有キャッシュはそれぞれ、バスその他のインターコネクト997と連結される。バスその他のインターコネクトは、コアおよび共有キャッシュを連結して通信を行う。
プロセッサはさらにメモリコントローラハブ(MCH)982を含む。この実施形態に示すように、MCHはプロセッサ900に集積される。例えばMCHはプロセッサコアとオンダイであってよい。プロセッサはMCH経由でメモリ986に連結される。1以上の実施形態では、メモリはDRAMを含んでよいが、これは必須ではない。
チップセットは入力/出力(I/O)ハブ993を含む。I/Oハブは、バス(例えばQPI(QuickPath Interconnect))その他のインターコネクト980を介してプロセッサに連結される。I/Oハブ993には、第1のコンポーネントインターコネクト985が連結される。
これは適切なシステムの特定の一例にすぎない。ラップトップ、デスクトップ、ハンドヘルドPC、PDA,工学ワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、エンベデッドプロセッサ、DSP、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話機、ポータブルメディアプレーヤ、ハンドヘルドデバイス、および様々なその他の電子デバイスに関する、当技術分野で知られている他のシステム設計および構成の利用もまた適切である。概して、ここに開示されるプロセッサおよび/または実行ユニットを組み込むことのできる幅広い範囲のシステムまたは電子デバイスが概して適切である。
上述に記載においては、説明をし易くする目的から、多くの特定の詳細を述べて実施形態の完全な理解を促すよう努めている。しかしながら当業者であれば、1以上の他の実施形態が、これら特定の詳細なしに実行可能であることを容易に理解する。ここに記載した特定の実施形態は、本発明の実施形態の範囲を限定する意図からではなく、例示する意図を有する。本発明の範囲は、上述した特定の例示からではなく、以下に示す請求項によってのみ決定されるべきものである。また、公知の回路、構造、デバイス、および処理に関してはブロック図の形式で示し、詳細には示さないことにより、記載の理解を曖昧にしないよう心がけている箇所もある。また適宜、参照番号または参照番号の末尾を図面にわたり繰り返すことで、オプションとして同様の特性を有する、対応または類似するエレメントであることを示している場合もある。
処理のなかには、ハードウェアコンポーネントによる実行が可能なものもあり、機械実行可能な命令で具現化されるものもあり、処理を行う命令でプログラミングされた回路またはハードウェアとする、または少なくともそうするものがある。回路には、汎用または専用プロセッサ、論理回路が含まれてよいが、これら以外にも様々なものが含まれうる。処理はさらにオプションとしてハードウェアおよびソフトウェアの組み合わせによって実行されてもよい。実行ユニットおよび/またはプロセッサは、機械命令または機械命令から導出される1以上の制御信号に呼応して、命令が特定する結果オペランドを格納する専用のあるいは特別の回路を含むことができる。
本明細書の随所で利用されている「一実施形態(one embodiment)(an embodiment)」あるいは「1以上の実施形態(one or more embodiments)」といった言い回しは、特定の特徴が実施形態の実行において含まれてよいことを示している。同様に、ある実施形態、図面、その説明では様々な特徴を一まとめに説明して、開示を簡素化することで様々な発明の側面の理解を促す工夫がなされている場合があることに留意されたい。しかしこの開示に関する手法が、実施形態が各請求項に明示されているもの以上の特徴を必要とすることを反映しているものとして捉えられるべきではない。そうではなくて、以下の請求項から分かるように、発明の各側面は、開示する1つ1つの実施形態の特徴全て未満のなかに存在する。従って詳細な記載に続く請求項は、この詳細な記載に、各請求項をそれ自体が発明の別個の実施形態であるように組み込まれるべきであることをここに明記しておく。

Claims (30)

  1. ソースオペランドと回転量とを示す回転命令を受信する段階と、
    前記回転命令が示すデスティネーションオペランドに、前記回転量で回転させた前記ソースオペランドを有する結果を格納する段階と、
    キャリーフラグの読み出しを伴わずに前記回転命令の実行を完了する段階と
    を備える方法。
  2. 前記完了する段階は、オーバフローフラグの読み出しを伴わずに前記回転命令の実行を完了する段階を有する請求項1に記載の方法。
  3. 前記完了する段階は、前記キャリーフラグの書き込みを伴わず、且つ、前記オーバフローフラグの書き込みを伴わずに、前記回転命令の実行を完了する段階を有する請求項2に記載の方法。
  4. 前記完了する段階は、符号フラグの読み出しを伴わず、ゼロフラグの読み出しを伴わず、補助キャリーフラグの読み出しを伴わず、且つ、パリティフラグの読み出しを伴わずに、前記回転命令の実行を完了する段階を有する請求項2に記載の方法。
  5. 前記完了する段階は、前記キャリーフラグの書き込みを伴わず、前記オーバフローフラグの書き込みを伴わず、前記符号フラグの書き込みを伴わず、前記ゼロフラグの書き込みを伴わず、前記補助キャリーフラグの書き込みを伴わず、且つ、前記パリティフラグの書き込みを伴わずに、前記回転命令の実行を完了する段階を有する請求項4に記載の方法。
  6. 前記受信する段階は、前記ソースオペランドを明示的に指定して、前記デスティネーションオペランドを明示的に指定する回転命令を受信する段階を有する請求項1に記載の方法。
  7. 前記受信する段階は、前記回転量を有する第2のソースオペランドを明示的に指定する回転命令を受信する段階を有する請求項1に記載の方法。
  8. 前記受信する段階は、前記回転量を有する第2のソースオペランドを暗示的に示す回転命令を受信する段階を有する請求項1に記載の方法。
  9. 前記回転命令の実行を完了する段階は、1クロックサイクルで完了する請求項1に記載の方法。
  10. 前記完了する段階は、前記回転命令から導出した単一のマイクロオペレーションの実行により前記回転命令の実行を完了する段階を有する請求項1に記載の方法。
  11. 前記回転命令は右回転命令を含み、前記ソースオペランドは32ビットおよび64ビットから選択されたサイズを有し、前記ソースオペランドは汎用レジスタおよびメモリ内の位置のいずれか1つを含み、前記デスティネーションオペランドは汎用レジスタを含む請求項1に記載の方法。
  12. 複数のコアを有する汎用マイクロプロセッサにより実行され、前記複数のコアの少なくとも1つが前記命令に応じて動作する回路を有する請求項1に記載の方法。
  13. ソースオペランドと回転量とを示す回転命令の結果、前記回転命令が示すデスティネーションオペランドに、前記回転量で回転させた前記ソースオペランドを有する結果を格納して、キャリーフラグの読み出しを伴わずに前記回転命令の実行を完了する実行ユニットを備える装置。
  14. 前記実行ユニットは、オーバフローフラグの読み出しを伴わずに前記回転命令の実行を完了する請求項13に記載の装置。
  15. 前記実行ユニットは、前記キャリーフラグの書き込みを伴わず、且つ、前記オーバフローフラグの書き込みを伴わずに、前記回転命令の実行を完了する請求項14に記載の装置。
  16. 前記実行ユニットは、符号フラグの読み出しを伴わず、ゼロフラグの読み出しを伴わず、補助キャリーフラグの読み出しを伴わず、且つ、パリティフラグの読み出しを伴わずに、前記回転命令の実行を完了する請求項14に記載の装置。
  17. 前記実行ユニットは、前記キャリーフラグの書き込みを伴わず、前記オーバフローフラグの書き込みを伴わず、前記符号フラグの書き込みを伴わず、前記ゼロフラグの書き込みを伴わず、前記補助キャリーフラグの書き込みを伴わず、且つ、前記パリティフラグの書き込みを伴わずに、前記回転命令の実行を完了する請求項16に記載の装置。
  18. 前記実行ユニットは、前記ソースオペランドを明示的に指定して、前記デスティネーションオペランドを明示的に指定する回転命令に応じて動作する請求項13に記載の装置。
  19. 前記実行ユニットは、前記回転量を有する第2のソースオペランドを明示的に指定する回転命令に応じて動作する請求項13に記載の装置。
  20. 前記実行ユニットは、前記回転量を有する第2のソースオペランドを暗示的に示す回転命令に応じて動作する請求項13に記載の装置。
  21. 前記実行ユニットは、前記回転命令の実行を1クロックサイクルで完了する請求項13に記載の装置。
  22. 前記実行ユニットは、単一のマイクロオペレーションの実行により前記回転命令の実行を完了する請求項11に記載の装置。
  23. 前記実行ユニットは、マルチコア汎用マイクロプロセッサのコア内に組み込まれている請求項11に記載の装置。
  24. ソースオペランドと回転量を有する即値とを明示的に指定する右回転命令の結果、前記右回転命令が明示的に指定するデスティネーションオペランドに、前記回転量で右回転させた前記ソースオペランドを有する結果を格納して、キャリーフラグの読み出しを伴わず、オーバフローフラグの読み出しを伴わず、前記キャリーフラグの書き込みを伴わず、且つ、前記オーバフローフラグの書き込みを伴わずに、前記回転命令の実行を完了する実行ユニットを備える装置。
  25. 前記実行ユニットは、前記回転命令の実行を1クロックサイクルで完了し、
    前記実行ユニットは、マルチコア汎用マイクロプロセッサのコア内に組み込まれている請求項24に記載の装置。
  26. インターコネクトと、
    前記インターコネクトに連結されたプロセッサと、
    前記インターコネクトに連結されたDRAMとを備え、
    前記プロセッサは、ソースオペランドと回転量とを示す回転命令の結果、前記回転命令が示すデスティネーションオペランドに、前記回転量で回転させた前記ソースオペランドを有する結果を格納して、キャリーフラグの読み出しを伴わずに前記回転命令の実行を完了するシステム。
  27. 前記プロセッサは、前記ソースオペランドを明示的に指定して、前記デスティネーションオペランドを明示的に指定する回転命令に応じて動作する請求項26に記載のシステム。
  28. 製品であって、
    回転命令を提供する実体を有する有形の機械可読媒体を備え、
    前記回転命令はソースオペランドおよび回転量を示し、機械により実行されると、前記機械に、
    前記回転命令が示すデスティネーションオペランドに、前記回転量で回転させた前記ソースオペランドを有する結果を格納する段階と、
    キャリーフラグの読み出しを伴わずに前記回転命令の実行を完了する段階と
    を実行させる製品。
  29. 前記回転命令は前記機械に、前記回転命令が明示的に指定する前記ソースオペランドを決定させ、前記回転命令が明示的に指定するデスティネーションオペランドに前記結果を格納させる請求項28に記載の製品。
  30. 前記回転量は、前記回転命令の即値に示される請求項1に記載の方法。
JP2010272961A 2009-12-26 2010-12-07 キャリーフラグの読み出しを伴わずに実行を完了する回転命令 Active JP5665221B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/655,213 US8504807B2 (en) 2009-12-26 2009-12-26 Rotate instructions that complete execution without reading carry flag
US12/655,213 2009-12-26

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014214502A Division JP6034352B2 (ja) 2009-12-26 2014-10-21 マルチコアプロセッサ、システムオンチップ、及び、携帯電話機

Publications (2)

Publication Number Publication Date
JP2011138499A true JP2011138499A (ja) 2011-07-14
JP5665221B2 JP5665221B2 (ja) 2015-02-04

Family

ID=44174154

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2010272961A Active JP5665221B2 (ja) 2009-12-26 2010-12-07 キャリーフラグの読み出しを伴わずに実行を完了する回転命令
JP2014214502A Active JP6034352B2 (ja) 2009-12-26 2014-10-21 マルチコアプロセッサ、システムオンチップ、及び、携帯電話機
JP2016210149A Active JP6509181B2 (ja) 2009-12-26 2016-10-27 方法、プロセッサ、及び、システム

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2014214502A Active JP6034352B2 (ja) 2009-12-26 2014-10-21 マルチコアプロセッサ、システムオンチップ、及び、携帯電話機
JP2016210149A Active JP6509181B2 (ja) 2009-12-26 2016-10-27 方法、プロセッサ、及び、システム

Country Status (6)

Country Link
US (7) US8504807B2 (ja)
JP (3) JP5665221B2 (ja)
CN (3) CN104484154B (ja)
BR (1) BRPI1005543B1 (ja)
DE (2) DE102010054267A1 (ja)
TW (2) TWI556166B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101539173B1 (ko) * 2013-03-15 2015-07-27 인텔 코포레이션 단 정수 곱셈들의 수를 감소시키기 위한 시스템들, 장치들 및 방법들
JP2017016712A (ja) * 2009-12-26 2017-01-19 インテル・コーポレーション マルチコアプロセッサ、システムオンチップ、及び、携帯電話機

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8464030B2 (en) * 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
WO2013095554A1 (en) 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order
WO2013095564A1 (en) 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride
US10223111B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
US9244687B2 (en) * 2011-12-29 2016-01-26 Intel Corporation Packed data operation mask comparison processors, methods, systems, and instructions
US9529591B2 (en) 2011-12-30 2016-12-27 Intel Corporation SIMD variable shift and rotate using control manipulation
US9128698B2 (en) * 2012-09-28 2015-09-08 Intel Corporation Systems, apparatuses, and methods for performing rotate and XOR in response to a single instruction
US20190196820A1 (en) * 2017-12-21 2019-06-27 Intel Corporation Apparatus and method for right shifting packed quadwords and extracting packed doublewords
US20190196821A1 (en) * 2017-12-21 2019-06-27 Intel Corporation Apparatus and method for right-shifting packed quadwords and extracting packed words
CN117555600B (zh) * 2023-10-20 2024-08-23 海光信息技术(成都)有限公司 用于数据通路的操作方法、计算装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6014336A (ja) * 1983-06-30 1985-01-24 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 命令処理装置
JPH04278638A (ja) * 1991-03-07 1992-10-05 Seiko Epson Corp 情報処理装置
JPH0588887A (ja) * 1991-09-30 1993-04-09 Toshiba Corp データ処理装置
JPH07504282A (ja) * 1991-11-12 1995-05-11 マイクロチップ テクノロジー インコーポレイテッド マイクロコントローラパワーアップ遅延装置
JP2009282744A (ja) * 2008-05-22 2009-12-03 Toshiba Corp 演算器及び半導体集積回路装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3040326C1 (de) 1980-10-25 1981-10-08 Eurosil GmbH, 8000 München Mikroprozessor mit Ruecksetz-Schaltanordnung
US4433390A (en) 1981-07-30 1984-02-21 The Bendix Corporation Power processing reset system for a microprocessor responding to sudden deregulation of a voltage
EP0096531B1 (en) 1982-06-09 1987-09-16 Fujitsu Limited One-chip semiconductor device incorporating a power-supply-potential detecting circuit with reset function
JPS6019220A (ja) 1983-07-13 1985-01-31 Fujitsu Ltd マイクロコンピユ−タ
JPS60143360A (ja) 1983-12-30 1985-07-29 Casio Comput Co Ltd 画像形成装置
JPS62106524A (ja) 1985-11-01 1987-05-18 Clarion Co Ltd 車載用の機器のマイクロコンピユ−タリセツト回路
JPH0241353A (ja) 1988-08-01 1990-02-09 Mitsui Toatsu Chem Inc 半導体封止用樹脂組成物
CN103092562B (zh) 1995-08-31 2016-05-18 英特尔公司 控制移位分组数据的位校正的装置
US5906002A (en) * 1997-02-10 1999-05-18 International Business Machines Corporation Method and apparatus for saving and restoring the context of registers using different instruction sets for different sized registers
US5881274A (en) * 1997-07-25 1999-03-09 International Business Machines Corporation Method and apparatus for performing add and rotate as a single instruction within a processor
US6715063B1 (en) * 2000-01-14 2004-03-30 Advanced Micro Devices, Inc. Call gate expansion for 64 bit addressing
JP4454810B2 (ja) 2000-08-04 2010-04-21 Necエレクトロニクス株式会社 デジタル位相制御方法及びデジタル位相制御回路
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7185180B2 (en) * 2002-04-02 2007-02-27 Ip-First, Llc Apparatus and method for selective control of condition code write back
TW583583B (en) * 2002-05-09 2004-04-11 Ip First Llc Apparatus and method for selective control of condition code write back
US6944744B2 (en) * 2002-08-27 2005-09-13 Advanced Micro Devices, Inc. Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
CN1438574A (zh) * 2003-02-21 2003-08-27 中国航天科技集团公司第九研究院七七一研究所 一种16位微处理器指令集
US7107435B2 (en) 2003-05-27 2006-09-12 International Business Machines Corporation System and method for using hardware assist functions to process multiple arbitrary sized data elements in a register
US7373514B2 (en) * 2003-07-23 2008-05-13 Intel Corporation High-performance hashing system
JP5088014B2 (ja) 2007-06-22 2012-12-05 トヨタ自動車株式会社 車両用サスペンションシステム
US7743232B2 (en) * 2007-07-18 2010-06-22 Advanced Micro Devices, Inc. Multiple-core processor with hierarchical microcode store
US7840783B1 (en) * 2007-09-10 2010-11-23 Netlogic Microsystems, Inc. System and method for performing a register renaming operation utilizing hardware which is capable of operating in at least two modes utilizing registers of multiple widths
US8914621B2 (en) * 2009-04-02 2014-12-16 Infineon Technologies Ag Processing unit that detects manipulations thereof, device comprising two processing units, method for testing a processing unit and a device comprising two processing units
US8504807B2 (en) 2009-12-26 2013-08-06 Intel Corporation Rotate instructions that complete execution without reading carry flag

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6014336A (ja) * 1983-06-30 1985-01-24 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 命令処理装置
JPH04278638A (ja) * 1991-03-07 1992-10-05 Seiko Epson Corp 情報処理装置
JPH0588887A (ja) * 1991-09-30 1993-04-09 Toshiba Corp データ処理装置
JPH07504282A (ja) * 1991-11-12 1995-05-11 マイクロチップ テクノロジー インコーポレイテッド マイクロコントローラパワーアップ遅延装置
JP2009282744A (ja) * 2008-05-22 2009-12-03 Toshiba Corp 演算器及び半導体集積回路装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017016712A (ja) * 2009-12-26 2017-01-19 インテル・コーポレーション マルチコアプロセッサ、システムオンチップ、及び、携帯電話機
US11106461B2 (en) 2009-12-26 2021-08-31 Intel Corporation Rotate instructions that complete execution either without writing or reading flags
US11900108B2 (en) 2009-12-26 2024-02-13 Intel Corporation Rotate instructions that complete execution either without writing or reading flags
KR101539173B1 (ko) * 2013-03-15 2015-07-27 인텔 코포레이션 단 정수 곱셈들의 수를 감소시키기 위한 시스템들, 장치들 및 방법들

Also Published As

Publication number Publication date
US20150089199A1 (en) 2015-03-26
US11106461B2 (en) 2021-08-31
US20150089200A1 (en) 2015-03-26
DE102010054267A1 (de) 2011-06-30
BRPI1005543A2 (pt) 2013-04-02
JP5665221B2 (ja) 2015-02-04
CN104636116A (zh) 2015-05-20
US9916160B2 (en) 2018-03-13
US20130311756A1 (en) 2013-11-21
US11900108B2 (en) 2024-02-13
CN104484154B (zh) 2019-02-15
TW201604777A (zh) 2016-02-01
TWI556166B (zh) 2016-11-01
CN102109976A (zh) 2011-06-29
JP6509181B2 (ja) 2019-05-08
US9940130B2 (en) 2018-04-10
JP2015038766A (ja) 2015-02-26
US8504807B2 (en) 2013-08-06
JP2017016712A (ja) 2017-01-19
BRPI1005543B1 (pt) 2020-10-06
CN102109976B (zh) 2015-04-22
US9164762B2 (en) 2015-10-20
US9940131B2 (en) 2018-04-10
CN104636116B (zh) 2019-02-15
US20110161635A1 (en) 2011-06-30
JP6034352B2 (ja) 2016-11-30
US20150089201A1 (en) 2015-03-26
TWI517034B (zh) 2016-01-11
US20220107806A1 (en) 2022-04-07
US20180321940A1 (en) 2018-11-08
CN104484154A (zh) 2015-04-01
TW201135589A (en) 2011-10-16
DE102010064599A1 (de) 2015-07-30

Similar Documents

Publication Publication Date Title
JP6034352B2 (ja) マルチコアプロセッサ、システムオンチップ、及び、携帯電話機
JP5736028B2 (ja) 3個のソースオペランドを加算する加算命令
JP6569969B2 (ja) プロセッサ、方法、プログラム、および機械可読記録媒体
KR102451950B1 (ko) 융합된 단일 사이클 증가-비교-점프를 수행하기 위한 명령어 및 로직
US10649774B2 (en) Multiplication instruction for which execution completes without writing a carry flag
JP6738579B2 (ja) 命令フローを最適化するチェックを実行するための装置および方法
JP2018503162A (ja) スピンループジャンプを実行するための装置および方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121030

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130129

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130226

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130401

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130507

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130806

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130906

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140508

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140722

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141021

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141208

R150 Certificate of patent or registration of utility model

Ref document number: 5665221

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250