[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP2018160288A - プロセッサ、方法、プログラム、および機械可読記録媒体 - Google Patents

プロセッサ、方法、プログラム、および機械可読記録媒体 Download PDF

Info

Publication number
JP2018160288A
JP2018160288A JP2018138039A JP2018138039A JP2018160288A JP 2018160288 A JP2018160288 A JP 2018160288A JP 2018138039 A JP2018138039 A JP 2018138039A JP 2018138039 A JP2018138039 A JP 2018138039A JP 2018160288 A JP2018160288 A JP 2018160288A
Authority
JP
Japan
Prior art keywords
bit
range
bits
instruction
source operand
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
JP2018138039A
Other languages
English (en)
Other versions
JP6569969B2 (ja
Inventor
ロクツキン、マキシム
Maxim Loktyukhin
マフリン、エリック
Eric Mahurin
エル. トール、ブレット
Bret L Toll
エル. トール、ブレット
ジー. ディクソン、マーティン
Martin G Dixon
ジー. ディクソン、マーティン
ピー. マークス、シーン
Sean P Mirkes
ピー. マークス、シーン
エル. クレイツァー、デイビット
David L Kreitzer
エル. クレイツァー、デイビット
モウスタファ オウルド−アハムド−ヴァル、エル
El Moustapha Ould-Ahmed-Vall
モウスタファ オウルド−アハムド−ヴァル、エル
ゴパル、ヴィノド
Vinodh Gopal
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 JP2018160288A publication Critical patent/JP2018160288A/ja
Application granted granted Critical
Publication of JP6569969B2 publication Critical patent/JP6569969B2/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/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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching

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)

Abstract

【課題】処理速度の早いビット操作命令の提供。【解決手段】ソースオペランドおよびデスティネーションオペランドを示す命令を受信する(101)。命令に呼応して結果をデスティネーションオペランドに格納する。結果オペランドは、第1範囲のビットと第2範囲のビットとを含んでよく、ここで第1範囲のビットの第1の端部は、命令により明示的に指定され、第1範囲の各ビットの値は、前記ソースオペランドの対応する位置にあるビットの値と等しく、第2範囲のビットは全て、前記ソースオペランドの対応する位置にあるビットの値に関わらず、同じ値を持ってよい(102)。命令の実行は、結果における第1範囲のビットの位置に関わらず、ソースオペランドの対応する位置にある同じ値のビットに対して結果における第1範囲を移動させることなく、完了してよい(103)。【選択図】図1

Description

様々な別個の実施形態が、ビット操作命令、ビット操作命令の実行方法、ビット操作命令実行ユニット、または実行ユニットを含むデバイスに係る。特に、様々な別個の実施形態は、ビットの範囲を分離するビット範囲分離命令、ビット範囲分離命令の実行方法、ビット範囲分離命令の実行ユニット、または実行ユニットを含むデバイスに係る。
汎用プロセッサ、専用プロセッサ、コントローラ、その他のデバイスが、ISA(instruction set architecture)が指定する命令を実行する。デバイスはこの命令により様々に異なる種類の処理を実行することができる。よく知られた処理の1つに、ビット操作処理がある。
様々に異なるビット操作命令が知られている。そのうち1つがEXTR−Extract命令である。EXTR命令に関しては、インテル(登録商標)Itanium(登録商標)アーキテクチャソフトウェア開発者用マニュアル、第3巻:命令セットレファレンス、改訂版2.2、2006年1月、書類番号:245319−005を参照されたい。
EXTR命令は、2つの即値により指定される1つのビットフィールドを抽出し、この抽出されたビットフィールドを右シフトして、デスティネーションにおける、抽出されたビットフィールドの右寄せを行う。このように、ビットフィールドを抽出することと、抽出されたビットフィールドをシフトさせることとを1つの命令で行うと、データ処理の速度および/または効率性が概して制限される。他のビット操作命令のなかには、テーブルルックアップを利用するものもあり、これは長いレイテンシーを生じる場合がある。
データ処理においては速度および/または効率性が重要であることから、従来とは異なる新たな操作命令を設けると好適であると思われる。
本発明は、以下の記載を、本発明の実施形態を示す添付図面を参照しながら読むことで理解が深まる。
ビット範囲分離命令の一実施形態を処理する方法の一実施形態のブロックフロー図である。 命令処理装置の一実施形態のブロック図である。 ビット範囲分離命令の第1の実施形態によるビット範囲分離処理の第1の実施形態を示す。 ビット範囲分離命令の第2の実施形態によるビット範囲分離処理の第2の実施形態を示す。 ビット範囲分離命令の第3の実施形態によるビット範囲分離処理の第3の実施形態を示す。 ビット範囲分離命令の特定の実施形態を表すBZHIの記述である。 ビット範囲分離命令の特定の実施形態を表すBZHI命令の疑似コード処理を示す。 ビット範囲分離ロジックの一実施形態を示すブロック図である。 適切な32ビットの汎用レジスタセットの特定の実施形態を示す。 適切な64ビットの汎用レジスタセットの別の特定の実施形態を示す。 フラグレジスタのステータスの適切な一実施形態を示すEFLAGSレジスタを示す。 適切なコンピュータシステムの第1の実施形態のブロック図である。 適切なコンピュータシステムの第2の実施形態のブロック図である。
以下の詳細な説明において、プロセッサの種類、命令実装の詳細、データの種類、レジスタの種類、レジスタの配置、システム構成等、多くの特定の詳細を述べる。しかし、実施形態はこれら特定の詳細なしに実施可能である。また、公知の回路、構造、および技術等に関して、詳細に説明しないことにより、本発明の実施形態の本質を曖昧にしないようにしている箇所もある。
レジスタあるいは他の格納位置に格納されるビットが、対象ビットのストリングまたは範囲を1つ、現在対象以外の、あるいは少なくとも対象範囲のビットの一部ではないビットのストリングまたは範囲を1以上とともに含むような、様々な場合がありうる。これらの場合を代表して、対象範囲のビットを、さらなる処理を行う数または値を表すようにすることもできる。現在対象外のビットは、不要なビットあるいはドントケアビットとみなすことができる。一以上の実施形態では、対象範囲のビットの分離は、ゼロとすることで、あるいは、不要なビットは破棄して対象範囲のビットの値は維持するようにすることで行うことができる。これにより、対象範囲のビットに対して後で処理をし易くなる。
実施形態は、新たな利用可能なビット範囲分離命令に係る。他の実施形態は、ビット範囲分離命令の実行ユニットに係る。さらに他の実施形態は、実行ユニットを有する、あるいは、命令を実行することのできる、汎用プロセッサ、専用プロセッサ、コントローラ、またはその他のロジックデバイスあるいは命令処理装置に係る。また別の実施形態は、ディスク、メモリ、または他の有形機械可読媒体に格納されるビット範囲分離命令に係る。
図1は、ビット範囲分離命令の一実施形態を処理する方法100の一実施形態のブロックフロー図である。様々な実施形態において、方法は、汎用プロセッサ、専用プロセッサ(例えばグラフィックスプロセッサまたはデジタルシグナルプロセッサ(DSP))、ハードウェアアクセラレータ(例えば暗号化アクセラレータ)、あるいは、別の種類のロジックデバイスまたは命令処理装置による実行中に行うことができる。
ビット範囲分離命令は、ブロック101でプロセッサまたは他の装置により受信されてよい。1以上の実施形態では、ビット範囲分離命令は、ソースオペランドおよびデスティネーションオペランドを示してよい。
ブロック102で、ビット範囲分離命令に呼応して結果をデスティネーションオペランドに格納してよい。その結果オペランドは、第1範囲のビットと第2範囲のビットとを有してよい。第1範囲のビットとは、各ビットの値が、ソースオペランドの対応する位置にあるビットの値と等しいものであってよい。第2範囲のビットはその全てが、ソースオペランドの対応する位置にあるビットの値に関わらず、同じ値を有してよい。1以上の実施形態では、第2範囲のビットの全てがゼロであってよい。あるいは、第2範囲のビットの全てが1であってもよい。
ブロック103で、ビット範囲分離命令の実行は、結果の第1範囲を、ソースオペランドの対応する位置にある同じ値のビットに対してシフトあるいは移動することなく完了してよい。これは、結果における第1範囲のビットの位置に関わらない(例えば、第1範囲のビットが、たとえ結果における中間の範囲のビットであってもよい)。1以上の実施形態では、ビット範囲分離命令の実行にテーブルルックアップは利用されなくてよいが、この場合にはレイテンシーが長くなる傾向にある。
上述したようなシフトまたはビットの移動をビット範囲分離命令から省くことで、複数の利点が生じる可能性がある。1つには、シフト処理が必要な場合ばかりではないことである。さらにシフト処理によって命令実行時間が増加する傾向にあったり、および/または、ロジック領域/コストを増加させる傾向にあったりすることが多い。さらに殆どのISAが既に専用のシフト処理を有しており、これらがビット範囲分離命令とは別個に利用されていることがある。他の利点をさらに以下で説明する。
図2は、命令処理装置110の一実施形態のブロック図である。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、これらの様々なハイブリッド、またはその他のプロセッサ全般に基づいていてよい。
また他の実施形態では、命令処理装置はコントローラ(例えばマイクロコントローラ)、または、命令処理機能を有するその他の種類のロジック回路であってよい。
図2に戻ると、利用中に命令処理装置は、ビット範囲分離命令112の一実施形態を受信することができる。一例では、ビット範囲分離命令は、メモリからあるいはソフトウェアから受信されてよい。ビット範囲分離命令は、命令処理装置が認識している機械命令または制御信号を表してよい。ビット範囲分離命令には、オペコードまたは他の命令識別子が含まれてよい。命令処理装置は、ビット範囲分離命令に応じておよび/またはこれに指定された結果を格納する機能を有する専用の、または特別な回路、あるいは他のロジック(例えばハードウェアおよび/またはファームウェアと組み合わせられたソフトウェア)を有してよい。
示している命令処理装置の実施形態には、命令復号器114が含まれる。復号器は、ビット範囲分離命令を受信して復号することができる。復号器は、元のビット範囲分離命令を反映する、あるいは、これから導出される、1以上のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、その他の命令、あるいはその他の制御信号を生成して出力することができる。復号器は、様々な異なるメカニズムを利用して実装することができる。適切なメカニズムの例には、これらに限定はされないが、マイクロコードROM、ルックアップテーブル、ハードウェア実装、PLA(programmable logic array)等が含まれる。
復号器は装置の必須のコンポーネントではない。1以上の他の実施形態では、装置はこの代わりに、命令エミュレータ、命令翻訳プログラム、命令モーファ、命令解釈プログラム、その他の命令変換ロジックを含むことができる。本技術分野では、様々な異なる種類の命令エミュレータ、命令モーファ、命令翻訳プログラム等が公知である。命令変換ロジックはビット範囲分離命令を受信して、ビット範囲分離命令をエミュレート、翻訳、変形、解釈したり、ビット範囲分離命令を変換したりして、元のビット範囲分離命令に対応する1以上の命令または制御信号を出力することができる。命令変換ロジックは、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせによる実装が可能である。場合によっては、命令変換ロジックの一部または全てが、命令処理装置の残りからオフダイの位置に設けられてもよい(例えば、別のダイとして、またはシステムメモリ内に設けられてもよい)。場合によっては、命令処理装置は復号器および命令変換ロジック両方を備えてもよい。
図2に戻ると、命令処理装置は実行ユニット116を含む。一例では、実行ユニットは、論理演算装置(arithmetic logic unit)、論理ユニット(logical unit)、ビット操作可能機能ユニット等を含むことができる。
示されている実施形態では、実行ユニットは、復号器の出力に連結されている、さもなくば、これと通信可能状態である。「連結(couple)」という用語は、2以上のエレメントとが直接的な電気接触または接続状態にあることを意味する場合がある。しかし「連結」という用語は、さらに、2以上のエレメントが直接的な接続状態にはないが、互いと協働、相互作用、あるいは通信することも意味する(例えば間にコンポーネントを介在させることで)。一例を挙げると、復号器および実行ユニットが、これらの間に介在するオプションのバッファその他の本技術分野で公知であるコンポーネント(1または複数)によって、互いと連結される場合がこれに相当する。
復号器がビット範囲分離命令を復号した結果、実行ユニットは、ビット範囲分離命令を反映する、またはこれから導出される1以上のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、その他の命令あるいはその他の制御信号を受信して実行してよい。また実行ユニットは、上述した命令変換ロジックから命令または制御信号を受信して実行してよい。実行ユニットは、ビット範囲分離命令から導出した命令その他の制御信号を実行する機能を有する回路またはその他の実行ロジック(例えば、ハードウェア、ソフトウェア、および/または、ファームウェアの組み合わせ)を含んでよい。
実行ユニットは、ビット範囲分離命令の結果、ビット範囲分離命令が示すデスティネーションオペランドに結果を格納する機能を有してよい。結果は、第1範囲のビットと第2範囲のビットとを有してよい。1以上の実施形態では、第1範囲のビットとは、各ビットの値が、ソースオペランドの対応する位置にある、命令が示すビットの値と等しいものであってよい。第2範囲のビットはその全てが、ソースオペランドの対応する位置にあるビットの値に関わらず、同じ値を有してよい。1以上の実施形態では、実行ユニットは、ビット範囲分離命令の実行を、結果の第1範囲を、結果における第1範囲のビットの位置に関わらず(例えば、第1範囲のビットが、たとえ結果における中間の範囲のビットであったとしても)、ソースオペランドの対応する位置にある同じ値のビットに対して移動することなく完了してよい。ビット範囲分離命令の実行中の上述したようなシフトまたは第1範囲のビットの移動を省くことで、特定のデータ処理の速度および/または効率性を上げることができる。
ビット範囲分離命令は、少なくとも1つのソースオペランドおよびデスティネーションオペランドを暗示的に識別する、あるいは明示的に指定することができる。1以上の実施形態では、ビット範囲分離命令は、専用フィールドまたは1セットのビットを有することで、ソースオペランド、デスティネーションオペランド、あるいはこれらの両方を明示的に指定することができる。1以上の実施形態では、ビット範囲分離命令は、ソースオペランドの、デスティネーションオペランドの、あるいは両方の1以上の固定レジスタまたはその他の格納位置を暗示的にまたは暗に識別することができる。1以上の実施形態では、ソースオペランドに利用される格納位置は、デスティネーションオペランドとしてもオプションとして利用することができ、この場合、ソースデータを結果で上書きすることができる。
1以上の実施形態では、ソースオペランドおよびデスティネーションオペランドの一部または全てが、レジスタセット118のレジスタに格納されてよい。レジスタセットは、レジスタファイルの一部であってよく、および潜在的に他のレジスタ(例えば制御レジスタ、ステータスレジスタ、フラグレジスタ等)を含んでよい。レジスタは、データ格納に利用することのできる格納位置またはデバイスであってよい。レジスタセットは、物理的に実行ユニットと同じダイ上に設けられることが多い。レジスタは、プロセッサ外から、あるいはプログラマの視点から、可視であってよい。例えば、命令はレジスタに格納されるオペランドを指定することができる。本明細書で記載するデータを格納および提供する機能を有しさえすれば、様々な異なる種類のレジスタが適切であり利用可能である。レジスタにはリネームされてもされなくてもよい。適切なレジスタの例には、これらに限定はされないが、専用物理レジスタ、レジスタのリネームを行って動的に割り当てられる物理レジスタ、専用物理レジスタおよび動的に割り当てられる物理レジスタの組み合わせ等が含まれる。またソースオペランドおよびデスティネーションオペランドのうち1以上は、レジスタ以外の格納位置(例えば不図示であるがシステムメモリのある位置)に格納されてもよい。
図2に戻ると、ビット範囲分離処理の一実施形態が示されている。ビット範囲分離命令は、この特定の場合にはレジスタセットの1以上のレジスタにあるソースオペランド(SRC)を示している、あるいは指定している。図面を簡潔にする目的から、図面におけるソースオペランド(SRC)は、ビットを8つだけ有しているが(つまり「10101010」)、しばしばオペランドはこれ以上の数のビット(例えば16ビット、32ビット、64ビット、128ビット、あるいはこれ以外の数のビット)を含む場合がある。
実行ユニットは、ソースオペランド(SRC)を受信してよい。実行ユニットは、ビット範囲分離命令により、ソースオペランド(SRC)上でビット範囲分離処理を実行して、該命令が示す、あるいは指定するデスティネーションオペランド(DEST)に対応する結果を格納する。この特定の場合にはデスティネーションオペランドはレジスタセットの1以上のレジスタに格納される。
結果は、第1範囲のビット122および第2範囲のビット120を有してよい。この特定の例では、第1範囲のビット122は、3つの最下位(最右端)ビットであり、第2範囲のビット120は、5つの最上位(最左端)ビットであるが、これはあくまで例示にすぎない。
第1範囲のビット122では、各ビットの値が、ソースオペランド(SRC)の対応する位置にあるビットの値と等しい。ソースオペランド(SRC)の3つの最下位または最右端ビットのビット値は「010」であり、同様に、デスティネーションオペランド(DEST)における第1範囲のビットの3つの最下位または最右端ビットも同一のビット値「010」を有する。
第2範囲のビット120はその全てが、ソースオペランドの対応する位置にあるビットの値に関わらず、同じ値を有していてよく、この特定の場合においては全てがゼロである。デスティネーションオペランド(DEST)内の結果の5つの最上位ビットは、ソースオペランド(SRC)の5つの最上位または最左端ビットのビット値が「10101」であろうとも、ビット値「00000」を有する。別の実施形態では、第2範囲のビット全てが1という同じ値を有することもできる(つまり、「11111」)。この特定の場合では、第2範囲の3つのビット各々が、ソースオペランドの対応する位置にあるビットとは異なる値を有することになる。
説明を曖昧にしないようにする意図から、比較的簡単な命令処理装置を示し、説明している。しかし他の実施形態では複数の実行ユニットを利用することもできることは理解されたい。例えば、装置は、複数の異なる種類の実行ユニット(例えば演算装置、論理演算装置(ALU)、整数ユニット(integer unit)等)を含んでよい。3つのユニットのうち少なくとも1つが、本明細書で開示するビット範囲分離命令の一実施形態に呼応することができる。また他の実施形態には、複数のコア、論理プロセッサ、または実行エンジンが含まれてよい。本明細書で開示するビット範囲分離命令を実行する機能を有する実行ユニットは、少なくとも1つ、少なくとも2つ、殆どあるいは全てのコア、論理プロセッサ、または実行エンジン内に含まれてよい。
命令処理装置はさらに、オプションとして1以上の公知の他のコンポーネントを含んでもよい。例えば、他の実施形態では、オプションとして命令フェッチロジック、プレデコードロジック、スケジュールロジック、リオーダ・バッファ、分岐予測ロジック、退避ロジック、レジスタ・リネームロジック、またはこれらの組み合わせを含んでよい。これらのコンポーネントは、従来の方法での実装、または、当業者であれば本開示に基づいて想到可能な微調整を加えることによる実装が可能である。本実施形態を理解する目的にはこれ以上これらのコンポーネントの詳述は不要であるが、これらコンポーネントの説明は刊行物にあるのでそれを参照されたい。当技術分野ではこれらコンポーネントの文字通り多くの異なる組み合わせおよび構成が公知である。本発明の範囲は、これら公知の組み合わせおよび構成のいずれにも限定はされない。実施形態は、これらオプションであるコンポーネントがあってもなくても実装可能である。
1以上の実施形態では、ビット範囲分離命令の一実施形態は、対象範囲のビットの第1の端部を分離することを暗示的にまたは暗に示している場合がある。暗示的にまたは暗に示された端部とは、明示的な値では「表現されない(unexpressed)」が「暗に示され(understood))」うる、という意味である。プロセッサその他の命令処理装置は、オペコードまたはその他の固有命令識別子によりビット範囲ゼロ命令を認識することができ、ビットの範囲の端部が内在していることを理解することができる。
図3は、対象範囲のビットの第1の端部を最下位ビット(LSB)として暗示的にまたは暗に示すビット範囲分離命令の第1の実施形態におけるビット範囲分離処理の第1の実施形態を示す。本図の最下位ビットは、「0」で示される最右端ビットである。
ビット範囲分離命令は、ソースオペランド(SRC)を暗示的に示す、あるいは明示的に指定する。本図の実施形態のソースオペランドは32ビットである。しかしオペランドは16ビット、64ビット、128ビット、あるいはその他の数のビットであってもよい。この特定の図では32ビットのソースオペランド(SRC)が、「10100110100110110101100111010110」というようにビットを格納している。これら特定のビット値は例示を目的としたものであり、必須要件ではない。
ビット範囲分離命令はさらに、デスティネーションオペランド(DEST)を暗示的に示す、あるいは、明示的に指定することもできる。デスティネーションオペランド(DEST)は、ビット範囲分離命令に従ってソースオペランド(SRC)に行われるビット範囲分離処理の一実施形態を表す結果を有する。この結果は、対象となる第1範囲のビット322と、第2範囲のクリアあるいは破棄されたビット320とを有する。
第1範囲のビット322においては、開始点が暗黙のLSBの第1の端部であり、この特定の場合には、終了点が19番目のビットに終了点である。この特定の場合、第2範囲のビットの開始点は20番目のビットであり、終了点は最上位ビット(MSB)である。第1範囲と第2範囲との間の境界は、他のいずれの場所であってもよい。
1以上の実施形態では、ビット範囲分離命令はさらに、ソースオペランドまたは定数または命令に関連付けられた即値などにより、対象の第1範囲のビットの終了点を示す値(数字を表すビット数)を明示的に指定することもできる。例えば明示的な値は、暗示的な、明示的な、あるいは理解される点(例えば暗示的な最下位ビットの端部、最上位ビット、または中央ビット等)から計測される端部に対応するビットの位置を表してよい。別の例においては、値は、暗示的な、明示的な、あるいは理解される点(例えば暗示的な最下位ビットの端部、最上位ビット、中央ビット、または対象範囲のビットの開始点)におけるビットの正または負の長さを表してもよい。
第1範囲のビット322では、各ビットの値が、ソースオペランド(SRC)の対応する位置にあるビットの値と等しい。この特定の例では、ソースオペランド(SRC)の19個の最下位または最右端ビットのビット値は「10110101100111010110」であり、同様に、デスティネーションオペランド(DEST)における第1範囲のビット322の19個の最下位または最右端ビットも同一のビット値「10110101100111010110」を有する。
第2範囲のビット320はその全てが、同じ値を有していてよく、この特定の場合においては全てがゼロである。この特定の例では、ソースオペランド(SRC)の12個の最上位または最左端ビットのビット値は「101001101001」であり、デスティネーションオペランド(DEST)における第2範囲の12個の最上位または最左端ビットは全て「000000000000」を有する。第2範囲の全てのビットが同じ1の値である構成も可能である(例えば「111111111111」)。
つまり命令が示すビットは、第1範囲のビットに含めて保持するか、第2範囲のビットに含めてゼロにする、あるいは破棄することができる。命令ではいずれの変換を採用してもよい。
別のオプションとして1以上の実施形態では、ビット範囲分離命令は、最上位ビット(MSB)として分離されるべき対象範囲のビットの第1の端部を暗示的にまたは暗に示すことができる。本図では最上位ビットが最左端ビットである。
図4は、対象範囲のビットの端部を最上位ビット(MSB)として暗示的にまたは暗に示すビット範囲分離命令の第2の実施形態によるビット範囲分離処理の第2の実施形態を示す。本図では最上位ビット(MSB)が「31」で示される最左端ビットである。
第2の実施形態は、前述した第1の実施形態と幾らか類似している。説明を簡潔にするべく、以下では類似点を繰り返すのではなく、差異を中心に説明する。
前と同様に、ビット範囲分離命令は、ソースオペランド(SRC)およびデスティネーションオペランド(DEST)を示す、または指定する。デスティネーションオペランド(DEST)は、対象となる第1範囲のビット422と、ゼロにされる、あるいは破棄される第2範囲のビット420とを含む結果を有する。
第1範囲のビット322においては、終了点が暗示的なMSBであり、この特定の場合には開始点が18番目のビットである。第2範囲のビットにおいては、開始点がLSBであり、この特定の場合には終了点が17番目のビットである。第1範囲と第2範囲との間の境界は、他のいずれの場所であってもよい。
1以上の実施形態では、ビット範囲分離命令は、第2のソースオペランドまたは命令の即値などにより、第1範囲のビットの開始点を示す値を明示的に指定することもできる。例えば、値は、第2の端部に対応するビットの位置、または、その長さの端部が第2の端部に対応するようなビット長を表すことができる。
第1範囲のビット422とは、各ビットの値が、ソースオペランドの対応する位置にあるビットの値と等しいものであってよい。この特定の例においては、ソースオペランド(SRC)の15個の最上位または最左端ビットは「101001101001101」であり、同様に、デスティネーションオペランド(DEST)における第1範囲のビット422の15個の最上位または最左端ビットも同一のビット値「101001101001101」を有する。
第2範囲のビット420はその全てが、同じ値を有していてよく、この特定の場合においては全てがゼロである。この特定の例では、ソースオペランド(SRC)の17個の最下位または最右端ビットのビット値は「10101100111010110」であり、デスティネーションオペランド(DEST)における第2範囲の17個の最下位ビットは全て「00000000000000000」を有する。第2範囲の全てのビットが同じ1の値である構成も可能である(例えば「11111111111111111」)。
別のオプションとして1以上の実施形態では、ビット範囲分離命令が、例えば第2のソースオペランドおよび/または命令の即値により、対象範囲のビットの両端部をそれぞれ示す値を明示的に指定することもできる。
図5は、対象範囲のビットの両端部を示す、または指定するビット範囲分離命令の第3の実施形態によるビット範囲分離処理の第3の実施形態を示す。説明を簡潔にするべく、以下では前述した2つの実施形態との類似点を繰り返すのではなく、差異を中心に説明する。
前と同様に、ビット範囲分離命令は、ソースオペランド(SRC)およびデスティネーションオペランド(DEST)を示す、または指定する。デスティネーションオペランド(DEST)は、対象となる第1範囲のビット522と、不要な第2範囲のビット520と、さらに、不要な第3範囲のビット521とを含む結果を有する。
第1範囲のビット522では、各ビットの値が、ソースオペランドの対応する位置にあるビットの値と等しい。第2範囲のビット520はその全てが、同じ値を有していてよく、この特定の場合においては全てがゼロである。またはゼロの代わりに1であってもよい。
第3範囲のビット521も同様に、その全てが同じ値を有していてよく、この特定の場合においては全てがゼロである。あるいは、ビット範囲分離命令は、第2範囲の最上位ビットをゼロにする、あるいは破棄し、且つ、不要な第3範囲の最下位ビットはゼロにしない、あるいは破棄しないようにすることもできる。この不要な第3範囲の最下位ビットは、後続する右シフト命令などにより、適宜、後で破棄することもできる。
端部を指定する値の各々は、暗示的な、あるいは理解される点(例えば最下位ビット、最上位ビット、または中央ビット等)から計測されるビットの位置、あるいは、暗示的な、あるいは理解される点(例えば最下位ビット、最上位ビット、中央ビット、または対象範囲のビットの端部等)のビットの正または負の長さを表してもよい。この特定の実施形態では、第1の値が、対象の第1範囲のビットの開始点のビット位置を表し、第2の値が、第1の値が表すビットの開始点からのビット長を表してよい。
図3−図5では、ビット範囲分離命令の実行は、結果の第1範囲のビットを、結果の第1範囲のビットの位置に関わらず、ソースオペランドの対応する位置にある同じ値のビットに対してシフトあるいは移動することなく完了していた。つまり、相対的なビット位置を変更するシフト処理あるいはその他の処理が行われなかった。第1範囲のビットをシフトして、例えば第1範囲のビットを最下位ビットに対して位置調整させる、あるいは位置合わせさせることが望ましい場合には、後続する命令(例えば右シフト命令)により行うことができる。多くのISAが、この処理を行うのに適した右シフト命令を有している。
図3−図5は、適切なビット範囲分離命令の幾らかの例を示す。本開示を読んだ当業者であれば、異なる実施形態を複数想到するであろう。
特定の実施形態におけるビット範囲分離命令に、BZHI(Zero High Bits Starting with Specified Bit Position Instruction:指定されたビット位置から始まる上位ビットをゼロにする命令)がある。BZHI命令は、オプションとしてREXプレフィックスを有してよい標準的な3バイトx86のオペコードを有して、より多くのレジスタおよびより広いデータ空間のアドレス指定が可能である。表1に、BZHI命令のオペランド符号を示す。
Figure 2018160288
オペランド1は明示的に指定されており、32ビットモードでは32ビットの汎用レジスタ(reg)、または、64ビットモードでは64ビットの汎用レジスタであってよい。オペランド1に対しては読み出し(R)および書き込み(W)が許されている。
オペランド2は明示的に指定されており、32ビットモードでは32ビットの汎用レジスタ(r)またはメモリ(m)、または、64ビットモードでは64ビットの汎用レジスタであってよい。オペランド2に対しては読み出し(R))が許されている。
図6は、ビット範囲を分離する、またはゼロにする命令の特定の実施形態を表すBZHIの記述である。BZHI命令は、第2のオペランドのビットを、デスティネーションオペランドにコピーして、第1のオペランドの8個の下位ビットに含まれる数が指定するビット位置からオペランドサイズの最大値までの全ての上位ビットをゼロに設定する。BZHI命令に関しては、第1のオペランドがデスティネーションオペランドとしても利用され、結果が第1のオペランドを上書きする。
ゼロフラグ(ZF)、キャリーフラグ(CF)、および符号フラグ(SF)は結果に応じて更新される。キャリーフラグ(CF)は、第1のオペランドの8個の下位ビットに含まれる数がオペランドサイズより大きい場合に設定される。ある側面においては、この場合のビット位置は、第1のオペランドの8個の下位ビットに含まれる数と、オペランドサイズとの間の差分として捉えることができる。オーバフローフラグ(OF)をクリアする。補助キャリーフラグ(AF)およびパリティフラグ(PF)は未定義である。これらフラグは図11に示す。
デフォルトのオペランドサイズは32ビットである。64ビットのオペランドのサイズが符号化可能である。命令の前の66Hのプレフィックスバイトにより#UDが生じる。
図7は、ビット範囲を分離する、またはゼロにする命令の特定の実施形態を表すBZHI命令の疑似コード処理を示す。SRCは、データを有する、明示的に指定された第2のソースオペランドのことであり、DESTは、これも第1のソースオペランドとして利用され、ビット位置を格納する際に利用されるデスティネーションオペランドのことである。OperandSizeは32ビットモードでは32ビットであり、64ビットモードでは64ビットである。CFとは、キャリーフラグのことである。
他の命令も考えることができる。例えば、ソースオペランドをデスティネーションオペランドで上書きすることは必須ではない。オペコード、符号化、REX,およびVEXプレフィックスに関しては、インテル(登録商標)64およびIA−32アーキテクチャソフトウェア開発者用マニュアル第2A巻:命令セットレファレンス、A−M、オーダ番号:253666−032US,2009年9月を参照されたい。
コンセプト例として、BZHIがビットフィールドを抽出するときにユーティリティをいかに持つかを考える。ビットフィールドの抽出は、例えばハフマン、ライス、およびガンマ符号等の数多くのデータ伸張圧縮および復号アルゴリズムで有用である。通常は、対象範囲のビットの開始点および終了点、または開始点および長さを、復号アルゴリズムによるランタイム中に決定することができる。場合によっては、対象範囲のビットは、予め定義された固定長さを有してよい(例えば長さ10:10:10:2)。他の場合には、対象範囲のビットは、例えばハフマン、ライス、およびガンマ符号等の場合同様の可変長を有することができる。いずれの場合においても、従来の方法を利用して、対象範囲のビットの開始点および終了点、または開始点および長さを決定することができる。
アルゴリズムのなかには、BZHIを右シフト命令とともに利用することで、対象のビットフィールドを分離して、最下位ビットに対して右側の位置合わせ、または右寄せを行うことができるものがある。この一例としては、復号アルゴリズムで対象範囲のビットの開始点および終了点を計算する場合、BZHI命令を行うことで、終了点から始まるデータのビットをゼロにして、その結果を格納して、後に右シフト命令を実行して、BZHI命令の結果を開始点の量だけ右シフトして、内側にシフトされた最上位に位置するビットをゼロ拡張することができる。この処理を以下に示す。
RESULT1=BZHI DATA,END
RESULT2=SHIFT_RIGHT RESULT1,START
復号アルゴリズムで対象範囲のビットの開始点および長さを計算するときに、右シフト命令を実行して、データを右シフトして、内側にシフトされた最上位に位置するビットをゼロ拡張して、その結果を格納して、後でBZHI命令を右シフト命令の結果に実行して、その長さよりも上位に位置する結果のビットをゼロにして、その結果を格納することができる。この処理を以下に示す。
RESULT1=SHIFT_RIGHT DATA,START
RESULT2=BZHI RESULT1,LENGTH
このような処理により、復号アルゴリズムが対象範囲のビットの開始点を提供する場合、長さを計算する必要がなくなることから、ビットフィールド抽出プロシージャ1つにつき1以上の命令をなくすことができるようになるので好適である。
対象範囲のビットの開始点および終了点、および開始点および長さをランタイムで決定するときには、これらの値をすぐに利用可能として、2つの命令のみによりビットフィールドを抽出することのできる機能があると好適である。ISAは2ソース命令セットのアーキテクチャであり、これによって、2つのオペランドのみを1つの命令に対して明示的に指定することができるようになる。可変の開始点および可変の終了点を有する普遍的なビットフィールド抽出命令は、3つの入力(つまり、開始データ、開始点、および終了点または長さの一方)が必要となる。場合によっては、あるビット範囲の可変の開始点および可変の終了点(または長さ)には、別の計算により計算される、および/または別の機会に知られていてもよい。2ソースISAでは、開始点と、終了点または長さの一方が、予め単一の入力として組み合わせられていてもよい。しかし場合によっては、これらの入力を予め組み合わせておくには、少なくとも2つのさらなる命令を追加する必要がある場合があり、これにより全体のレイテンシーが上がってしまう虞がある。可変の開始点および可変の終了点(または長さ)を指定する必要なく、ビット範囲をゼロにする処理を実行する命令により、性能上の利点が得られよう。従って、開始点をビット範囲分離命令で暗示的に指定すること、ビット範囲分離命令からシフト処理を省くことで、それぞれ性能上の利点が得られよう。
分離され抽出されたビットフィールドは、例えば抽出されたビットフィールドを機械のデータワードサイズとしてさらなる処理に備えさせたり、パラレル分散(parallel scatter)、ダンプ処理(deposit operation)その他の用途に利用されたり、といった様々な目的に利用することができる。実施形態の範囲は、この種類の処理のうち公知のものに限定されない。
図8は、ビット範囲分離ロジック830の一実施形態を示すブロック図である。ビット範囲分離ロジックは、実行ユニットに含められて、ビット範囲分離命令に呼応することができる。
図示されているビット範囲分離ロジックは32ビットの処理用である。ロジックは、64ビットまたはそれ以上の処理用の拡張が容易である。さらに、図示されているロジックは、最下位ビット(LSB)における対象範囲のビットの暗示的な開始点を採用(assume)することができる。従って図示されているロジックは、図3に示す処理に非常によく似ている。
ビット範囲分離ロジックは、32ビットのソースオペランド832と、対象ビットの範囲の他の端部のビット位置を表す8ビットの位置にある値834とを入力として受け取る。
ビット範囲分離ロジックは、マスク生成ロジック836を含む。マスク生成ロジックは4つの2:3の飽和復号器838A−Dを含む。2:3の飽和復号器各々は、8ビットの位置にある値を受信するよう連結されている。飽和復号器838A−Bの第1の対の出力は、第1の6:16の飽和復号器F840Aの入力に連結されている。飽和復号器838C−Dの第2の対の出力は、第2の6:16の飽和復号器840Bの入力に連結されている。マスク生成ロジックは、8ビットの位置にある値に基づいてマスクを生成する機能を有する。一実施形態では、マスク生成ロジックは、(1)各々が対象範囲のビットに対応して、各々が1の値を有する第1範囲のビット、および、(2)各々が対応する位置にある対象外の不要な範囲のビットに対応し、各々がゼロの値を有する第2範囲のビットを有するようなマスクを生成することができる。例えばマスクは、対象範囲のビットの暗示的な最下位ビット(LSB)に相当する開始点から8ビットの位置にある値が指定する対象範囲のビットの終了点まで1を有し、全てのそれより上位のビットにおいてゼロを有する。
32ビットのマスクレジスタ842は、第1および第2の6:16の飽和復号器の出力に連結されてマスクを受信する。例を挙げると、32ビットのマスクは一時的なロジックのレジスタを含んでよい。
ビット範囲分離ロジックはさらに、ビットワイズ演算ロジック844を含む。1以上の実施形態では、ビットワイズ演算ロジックはANDロジックを含んでよい。あるいは、ビットワイズ演算ロジックはORロジック、XORロジック等を含むこともできる。ビットワイズ演算ロジックは、32ビットのマスクレジスタから32ビットのマスクを受け取るよう連結されてよい。ビットワイズ演算ロジックはさらに、32ビットのソースオペランドを受け取るよう連結される。ビットワイズ演算ロジックは、32ビットのソースオペランドおよび32ビットのマスクに対してビットワイズ演算を行う機能を有する。
AND演算ロジックの場合、マスクの1でマスクされる32ビットのソースオペランドのビットは、結果において同じように再生され、マスクの0でマスクされる32ビットのソースオペランドのビットは全てクリアされる、あるいはゼロに設定される。このようなAND演算ロジックを「ゼロロジック」とみなすことができる。
OR演算ロジックの場合、マスクの1でマスクされる32ビットのソースオペランドのビットは、結果において同じように再生され、マスクの0でマスクされる32ビットのソースオペランドのビットは全て1に設定される。一般的には不要なビットはAND演算ロジックでゼロにクリアするほうが、OR演算ロジックにより1に設定するよりも有利であるが、OR演算ロジックの利用が有利である場合もある。
示されているビット範囲分離ロジック830に僅かな変更を加えることにより、暗示的な最下位ビット(LSB)に相当する開始点の代わりに、明示的な開始位置を柔軟に得ることができるようになる。オプションとして、復号器838A−Dおよび復号器840A−Bを飽和復号器とせずに、明示的な開始位置を追加的な入力として不飽和復号器に加えることもできる。これにより、図5に示すものに非常によく似たビット範囲分離処理を得ることもできる。
1以上の実施形態では、汎用レジスタセット内のレジスタを利用して、1以上のソースおよび/またはデスティネーションオペランドを格納することができる。さらに幾らかのコンセプト例においては、様々なインテルアーキテクチャプロセッサで利用可能な適切な汎用レジスタの実施形態を挙げることができるが、これら特定のレジスタは必須ではない。
図9は、適切な32ビットの汎用レジスタセット950の特定の実施形態を示す。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ビットのダブルワードの符号なし整数を格納することができる。
図10は、適切な64ビットの汎用レジスタセット1052の別の特定の実施形態を示す。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月を参照されたい。これら特定のレジスタはあくまで例示であり、必須ではない。
図11は、フラグレジスタのステータスの適切な一実施形態を示すEFLAGSレジスタを示す。この特定のレジスタおよびこれらの特定のフラグは必須ではない。
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である。EFLAGS/RFLAGSレジスタ、およびキャリーフラグのさらなる記述に関しては、インテル(登録商標)64およびIA−32アーキテクチャソフトウェア開発者用マニュアル、第1巻:基本アーキテクチャ、オーダ番号:253665−032US、2009年9月を参照されたい。
1以上の実施形態には、機械(例えば実行ユニット)により実行されると本明細書のいずれかの箇所に記載されているビット範囲分離処理を実行させるビット範囲分離命令を格納した、有形の機械アクセス可能な、および/または、機械により可読である媒体を含む製品が含まれる。有形の媒体には、1以上の固体材料が含まれてよい。媒体は、例えば機械アクセス可能な形態で情報を提供(例えば格納)するメカニズムを含むことができる。例えば、媒体はオプションとして記録可能媒体(例えばフロッピー(登録商標)ディスク、光格納媒体、光ディスク、CD−ROM,磁気ディスク、光磁気ディスク、ROM、PROM、EPROM、EEPROM、RAM、SRAM、DRAM、フラッシュメモリ、およびこれらの組み合わせ)を含むことができる。
適切な機械には、これらに限られないが、ほんの数例を挙げると、実行ユニット、汎用プロセッサ、専用プロセッサ(例えばグラフィックスプロセッサおよび暗号化プロセッサ)、暗号化アクセラレータ、ネットワーク通信プロセッサ、コンピュータシステム、ネットワークデバイス、モデム、PDA,携帯電話機、および、幅広い範囲の他の電子デバイスが1以上の実行ユニットとともに含まれる。
また別の実施形態は、実行ユニットを有する、および/またはここで開示する方法を実行するコンピュータシステム、エンベデッドシステム、その他の電子デバイスに係る。
図12は、適切なコンピュータシステム1201の第1の実施形態のブロック図である。
コンピュータシステムはプロセッサ1200を含む。プロセッサは、少なくとも1つのビット範囲分離命令1202を実行する機能を有する少なくとも1つの実行ユニット1206を含む。
プロセッサは、バス(例えばフロントサイドバス)または他のインターコネクト1280を介してチップセット1281に連結される。インターコネクトは、プロセッサと、システムの他のコンポーネントとの間におけるデータ信号のやりとりをチップセット経由で行うときに利用可能である。
チップセットは、メモリコントローラハブ(MCH)1282として知られているシステムロジックチップを含む。MCHは、フロントサイドバスまたは他のインターコネクト1280に連結される。
メモリ1286はMCHに連結される。様々な実施形態では、メモリは、RAMを含むことができる。DRAMは、一部の(全てではない)コンピュータシステムで利用されるRAMの一例である。図示されているように、メモリは、命令(例えば1以上のビット範囲分離命令)1287およびデータ1288を格納するために利用することができる。
MCHにはコンポーネントインターコネクト1285も連結される。1以上の実施形態では、コンポーネントインターコネクトは、1以上のPCIe(peripheral component interconnect express)インタフェースを含むことができる。コンポーネントインターコネクトは、他のコンポーネントを、システムの残りのコンポーネントに、チップセット経由で連結することができる。これらコンポーネントの一例は、グラフィックチップあるいは他のグラフィックデバイスであるが、これはオプションであり必須ではない。
チップセットも、I/O(入力/出力)コントローラハブ(ICH)1284を含む。ICHは、ハブインタフェースバスその他のインターコネクト1283を介してMCHに連結される。1以上の実施形態では、バスその他のインターコネクト1283はDMI(Direct Media Interface)を含むことができる。
ICHにはデータ格納装置1289が連結される。様々な実施形態では、データ格納装置には、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、CD−ROMデバイス、フラッシュメモリデバイス等、またはこれらの組み合わせが含まれてよい。
ICHにはさらに、第2のコンポーネントインターコネクト1290が連結される。1以上の実施形態では、第2のコンポーネントインターコネクトは、1以上のPCIeインタフェースを含むことができる。第2のコンポーネントインターコネクトは、様々な種類のコンポーネントを、システムの残りのコンポーネントに、チップセット経由で連結することができる。
ICHにはまたさらに、シリアル拡張ポート1291が連結される。1以上の実施形態では、シリアル拡張ポートは、1以上のUSB(universal serial bus)ポートを含むことができる。シリアル拡張ポートは、様々な他の種類の入力/出力デバイスを、システムの残りのコンポーネントにチップセット経由で連結することができる。
ICHにオプションとして連結可能なこの他のコンポーネントの幾らかの例には、これらに限定はされないが、オーディオコントローラ、無線トランシーバ、およびユーザ入力デバイス(例えばキーボード、マウス)が含まれる。
ICHにはさらにネットワークコントローラが連結される。ネットワークコントローラは、システムをネットワークに連結することができる。
1以上の実施形態では、コンピュータシステムは、ワシントン州Redmondのマイクロソフトコーポレーション社から入手可能なWINDOWS(登録商標)オペレーティングシステムのバージョンを実行することができる。また他のオペレーティングシステム(例えばUNIX(登録商標)、Linux(登録商標)、またはエンベデッドシステム)の利用も可能である。
これは適切なコンピュータシステムの一例にすぎない。例えば、1以上の他の実施形態では、プロセッサがマルチコアを有してもよい。別の1以上の実施形態では、MCH1282はプロセッサ1200に物理的にオンダイに集積されていてよく、プロセッサを直接メモリ1286に、集積されたMCHを介して連結することができる。また別の1以上の実施形態では、他のコンポーネントをプロセッサにオンダイに集積して、例えばシステムオンチップ(SoC)デザインを提供することができる。さらに別の1以上の実施形態では、コンピュータシステムが複数のプロセッサを有することができる。
図13は、適切なコンピュータシステム1301の第2の実施形態のブロック図である。第2の実施形態は、前段で説明した第1のコンピュータシステム例にいくらか類似している。説明を簡潔にするべく、以下では類似点を全て繰り返すのではなく、差異を中心に説明する。
上述した第1の実施形態と同様に、コンピュータシステムは、プロセッサ1300と、I/Oコントローラハブ(ICH)1384を有するチップセット1381とを含む。さらに第1の実施形態と同様に、コンピュータシステムは、チップセットに連結された第1のコンポーネントインターコネクト1385、ICHに連結された第2のコンポーネントインターコネクト1390、ICHに連結されたシリアル拡張ポート1391、ICHに連結されたネットワークコントローラ1392、およびICHに連結されたデータ格納装置1389を含む。
この第2の実施形態では、プロセッサ1300はマルチコアプロセッサである。マルチコアプロセッサは、プロセッサコア1394−1から1394−Mを含み、ここでMは2以上の整数であってよい(例えば、2、4、7、あるいはこれより大きい整数)。各コアは、ここに開示する命令の少なくとも1つの実施形態を実行する機能を有する少なくとも1つの実行ユニットを含むことができる。図示されているように、コア−1はキャッシュ1395(例えばL1キャッシュ)を含む。他のコア各々も同様に専用コアを含む。プロセッサコアは、単一の集積回路(IC)チップに実装されてよい。
プロセッサはさらに少なくとも1つの共有キャッシュ1396を含む。共有キャッシュは、プロセッサの1以上のコンポーネント(例えばコア)が利用するデータ(例えば命令)を格納することができる。例えば、共有キャッシュは、メモリ1386にローカルにデータをキャッシュすることにより、プロセッサのコンポーネントからのアクセスをより迅速に行うことができる。1以上の実施形態では、共有キャッシュには1以上の中間レベルのキャッシュ(レベル2(L2)、レベル3(L3)、レベル4(L4))、あるいはその他のレベルのキャッシュ、最終のレベルのキャッシュ(LLC)、および/または、これらの組み合わせが含まれてよい。
プロセッサコアおよび共有キャッシュはそれぞれ、バスその他のインターコネクト1397と連結される。バスその他のインターコネクトは、コアおよび共有キャッシュを連結して通信を行う。
プロセッサはさらにメモリコントローラハブ(MCH)1382を含む。この実施形態に示すように、MCHはプロセッサ1300に集積される。例えばMCHはプロセッサコアとオンダイであってよい。プロセッサはMCH経由でメモリ1386に連結される。1以上の実施形態では、メモリはDRAMを含んでよいが、これは必須ではない。
チップセットは入力/出力(I/O)ハブ1393を含む。I/Oハブは、バス(例えばQPI(QuickPath Interconnect))その他のインターコネクト1380を介してプロセッサに連結される。I/Oハブ1393には、第1のコンポーネントインターコネクト1385が連結される。
これは適切なシステムの特定の一例にすぎない。ラップトップ、デスクトップ、ハンドヘルドPC、PDA,工学ワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、エンベデッドプロセッサ、DSP、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話機、ポータブルメディアプレーヤ、ハンドヘルドデバイス、および様々なその他の電子デバイスに関する、当技術分野で知られている他のシステム設計および構成の利用もまた適切である。概して、ここに開示されるプロセッサおよび/または実行ユニットを組み込むことのできる幅広い範囲のシステムまたは電子デバイスが概して適切である。
上述に記載においては、説明をし易くする目的から、多くの特定の詳細を述べて実施形態の完全な理解を促すよう努めている。しかしながら当業者であれば、1以上の他の実施形態が、これら特定の詳細なしに実行可能であることを容易に理解する。ここに記載した特定の実施形態は、本発明の実施形態の範囲を限定する意図からではなく、例示する意図を有する。本発明の範囲は、上述した特定の例示からではなく、以下に示す請求項によってのみ決定されるべきものである。また、公知の回路、構造、デバイス、および処理に関してはブロック図の形式で示し、詳細には示さないことにより、記載の理解を曖昧にしないよう心がけている箇所もある。また適宜、参照番号または参照番号の末尾を図面にわたり繰り返すことで、オプションとして同様の特性を有する、対応または類似するエレメントであることを示している場合もある。
処理のなかには、ハードウェアコンポーネントによる実行が可能なものもあり、機械実行可能な命令で具現化されるものもあり、処理を行う命令でプログラミングされた回路またはハードウェアとする、または少なくともそうするものがある。回路には、汎用または専用プロセッサ、論理回路が含まれてよいが、これら以外にも様々なものが含まれうる。処理はさらにオプションとしてハードウェアおよびソフトウェアの組み合わせによって実行されてもよい。実行ユニットおよび/またはプロセッサは、機械命令または機械命令から導出される1以上の制御信号に呼応して、命令が特定する結果オペランドを格納する専用のあるいは特別の回路を含むことができる。
本明細書の随所で利用されている「一実施形態(one embodiment)(an embodiment)」あるいは「1以上の実施形態(one or more embodiments)」といった言い回しは、特定の特徴が実施形態の実行において含まれてよいことを示している。同様に、ある実施形態、図面、その説明では様々な特徴を一まとめに説明して、開示を簡素化することで様々な発明の側面の理解を促す工夫がなされている場合があることに留意されたい。しかしこの開示に関する手法が、実施形態が各請求項に明示されているもの以上の特徴を必要とすることを反映しているものとして捉えられるべきではない。そうではなくて、以下の請求項から分かるように、発明の各側面は、開示する1つ1つの実施形態の特徴全て未満のなかに存在する。従って詳細な記載に続く請求項は、この詳細な記載に、各請求項をそれ自体が発明の別個の実施形態であるように組み込まれるべきであることをここに明記しておく。
本実施形態の例を下記の各項目として示す。
[項目1]
方法であって、
データを有する第1のソースオペランドと、第1範囲のビットの1以上の端部に対応する位置を示すメモリ又はレジスタ内の1以上の値を明示的に指定する第2のソースオペランドと、デスティネーションオペランドとを含むオペランドを示す命令を受信する段階と、
第1の端部が前記メモリ又はレジスタ内の前記1以上の値により明示的に指定され、各ビットの値が前記第1のソースオペランドの対応する位置にあるビットの値と等しい前記第1範囲のビットと、前記第1のソースオペランドの対応する位置にあるビットの値に関わらず全てが同じ値を持つ第2範囲のビットとを含む結果を、前記命令に呼応して前記デスティネーションオペランドに格納する段階と、
前記結果の前記第1範囲のビットの位置に関わらず、前記第1のソースオペランドの対応する位置にある同じ値のビットに対して前記結果の前記第1範囲を移動させることなく、前記命令の実行を完了させる段階と、
を備える方法。
[項目2]
前記命令の実行を完了させる段階は、
前記第1範囲のビットが前記結果内の中間範囲にあるかないかに関わらずシフト処理を行うことなく前記命令の実行を完了させる段階を有し、
前記命令の実行を完了させる段階はメモリ内のテーブルルックアップを利用せずに行われる項目1に記載の方法。
[項目3]
前記命令を受信する段階は、
前記第1範囲のビットの第2の端部を暗示的に示す命令を受信する段階を有する項目1または2に記載の方法。
[項目4]
前記命令を受信する段階は、
前記第1範囲のビットの前記第2の端部を、最下位ビットおよび最上位ビットのいずれかとして暗示的に示す命令を受信する段階を有する項目3に記載の方法。
[項目5]
前記命令は、2つのソースオペランドのみの明示的な指定を許可するフォーマットを有する項目1から4のいずれか1項に記載の方法。
[項目6]
前記命令を受信する段階は、
前記第2のソースオペランドを明示的に指定する命令を受信する段階を有する項目1から5のいずれか1項に記載の方法。
[項目7]
前記第2のソースオペランドは、前記第1の端部に対応するビットの位置、および、前記第1の端部を端部として持つビット列のビット長のうちいずれかを表す値を持つ項目1から6のいずれか1項に記載の方法。
[項目8]
前記命令を受信する段階は、
前記第2のソースオペランドによって前記第1範囲のビットの2つの端部を明示的に指定する命令を受信する段階を有する項目1または2に記載の方法。
[項目9]
前記結果を格納する段階は、
全ての値がゼロ(0)である第2範囲のビットを格納する段階を有する項目1から8のいずれか1項に記載の方法。
[項目10]
前記第1のソースオペランドを前記デスティネーションオペランドにコピーする段階と、
マスクを生成する段階と、
前記マスクと前記デスティネーションオペランドとにAND演算を行う段階とを備え、
前記マスクは、(a)各々が前記第1範囲のビットにおける対応する位置にあるビットに対応しており、各々が1の値を持つ第1セットのビットと、(b)各々が前記第2範囲のビットにおける対応する位置にあるビットに対応しており、各々がゼロ(0)の値を持つ第2セットのビットとを含む項目9に記載の方法。
[項目11]
前記方法は、複数のコアを含む汎用マイクロプロセッサにより実行され、
前記複数のコアのうち少なくとも1つのコアは前記命令に呼応する回路を有する項目1から10のいずれか1項に記載の方法。
[項目12]
データを有する第1のソースオペランドと、第1範囲のビットの1以上の端部に対応する位置を示すメモリ又はレジスタ内の1以上の値を明示的に指定する第2のソースオペランドと、デスティネーションオペランドとを含むオペランドを示す命令を受信する復号器と、
前記命令の結果、前記命令が示すデスティネーションオペランドに結果を格納する実行ユニットと
を備え、
前記結果は、前記第1範囲のビットと第2範囲のビットとを含み、
前記第1範囲のビットの第1の端部は、前記メモリ又はレジスタ内の前記1以上の値により明示的に指定され、前記第1範囲の各ビットの値は、前記命令が示す前記第1のソースオペランドの対応する位置にあるビットの値と等しく、
前記第2範囲のビットは全て、前記第1のソースオペランドの対応する位置にあるビットの値に関わらず、同じ値を持ち、
前記実行ユニットは、前記結果の前記第1範囲のビットの位置に関わらず、前記第1のソースオペランドの対応する位置にある同じ値のビットに対して前記結果の前記第1範囲を移動させることなく、前記命令の実行を完了させる装置。
[項目13]
前記実行ユニットは、前記第1範囲のビットが前記結果内の中間範囲にあるかないかに関わらずシフト処理を行うことなく前記命令の実行を完了させ、
前記実行ユニットは、メモリ内のテーブルルックアップを行わずに前記結果を格納する項目12に記載の装置。
[項目14]
前記命令は、前記第1範囲のビットの第2の端部を暗示的に示す項目12または13に記載の装置。
[項目15]
前記命令は、前記第2の端部を、最下位ビットおよび最上位ビットのいずれかとして暗示的に示す項目14に記載の装置。
[項目16]
前記命令は、2つのソースオペランドのみの明示的な指定を許可するフォーマットを有する項目12から15のいずれか1項に記載の装置。
[項目17]
前記実行ユニットは、前記命令により明示的に指定された前記第2のソースオペランドから前記第1範囲のビットの前記第1の端部を決定する項目12から16のいずれか1項に記載の装置。
[項目18]
前記第2のソースオペランドは、前記第1の端部に対応するビットの位置、および、前記第1の端部を端部として持つビット列のビット長のうちいずれかを表す値を持つ項目12から17のいずれか1項に記載の装置。
[項目19]
前記命令は、前記命令により明示的に指定された前記第2のソースオペランドによって前記第1範囲のビットの2つの端部を明示的に指定する項目12または13に記載の装置。
[項目20]
前記実行ユニットは、前記第2範囲のビット全ての値がゼロ(0)である結果を格納する項目12から19のいずれか1項に記載の装置。
[項目21]
前記実行ユニットは、
前記第1のソースオペランドと前記デスティネーションオペランドとに連結されて前記第1のソースオペランドを前記デスティネーションオペランドにコピーするコピーロジックと、
前記デスティネーションオペランドに連結されて前記デスティネーションオペランドの前記第2範囲のビットをゼロにするゼロロジックと
を備え、
前記ゼロロジックは、
マスクを生成するマスク生成ロジックと、
前記マスクと前記デスティネーションオペランドとに連結されて前記マスクと前記デスティネーションオペランドのデータとにAND演算を行うAND演算ロジックとを有し、
前記マスクは、(a)各々が前記第1範囲のビットにおける対応する位置にあるビットに対応しており、各々が1の値を持つ第1セットのビットと、(b)各々が前記第2範囲のビットにおける対応する位置にあるビットに対応しており、各々がゼロ(0)の値を持つ第2セットのビットとを含む項目20に記載の装置。
[項目22]
前記格納では、全てが1の値を持つ第2範囲のビットが格納される項目12から19のいずれか1項に記載の装置。
[項目23]
前記命令は機械命令を含み、
前記実行ユニットは、前記機械命令に呼応する回路を有する項目12から22のいずれか1項に記載の装置。
[項目24]
前記実行ユニットは、マルチコア汎用マイクロプロセッサのコアに含まれる項目12から23のいずれか1項に記載の装置。
[項目25]
装置であって、
命令の結果、結果をデスティネーションオペランドに格納する実行ユニットを備え、
前記命令は、レジスタの第1のソースオペランドと、レジスタおよびメモリのうちいずれかの第2のソースオペランドとを示しており、
前記第1のソースオペランドは16ビット、32ビット、および64ビットのうちいずれかであり、
前記第2のソースオペランドは32ビットおよび64ビットのうちいずれかであり、
前記結果は、第1範囲のビットと第2範囲のビットとを含み、
前記第1範囲のビットの第1の端部は、前記命令が暗示的に示す最下位ビットにあり、第2の端部は、前記第1のソースオペランドの最下位バイトで明示的に指定された値が示すビット位置より1ビット手前であり、
前記第1範囲の各ビットの値は、前記第2のソースオペランドの対応する位置にあるビットの値と等しく、
前記第2範囲のビットは、示された前記ビット位置から最上位ビットまでの範囲であり、前記第2範囲の全てのビットはゼロの値に等しく、
前記命令は、ソースオペランドとして、前記第1のソースオペランドと前記第2のソースオペランドを示す装置。
[項目26]
前記実行ユニットは前記命令の結果、シフト処理を行わない項目25に記載の装置。
[項目27]
インターコネクトと、
前記インターコネクトに連結され、データを有する第1のソースオペランドと、第1範囲のビットの1以上の端部に対応する位置を示すメモリ又はレジスタ内の1以上の値を明示的に指定する第2のソースオペランドと、デスティネーションオペランドとを含むオペランドを示す命令を受信するプロセッサと、
前記インターコネクトに連結されたDRAMとを備え、
前記プロセッサは、前記命令の結果、前記命令が示すデスティネーションオペランドに結果を格納し、
前記結果は、第1範囲のビットと第2範囲のビットとを含み、
前記第1範囲のビットの第1の端部は、前記メモリ又はレジスタ内の前記1以上の値により明示的に指定され、前記第1範囲の各ビットの値は、前記命令が示す前記第1のソースオペランドの対応する位置にあるビットの値と等しく、
前記第2範囲のビットは全て、前記第1のソースオペランドの対応する位置にあるビットの値に関わらず、同じ値を持ち、
前記プロセッサは、前記結果の前記第1範囲のビットの位置に関わらず、前記第1のソースオペランドの対応する位置にある同じ値のビットに対して前記結果の前記第1範囲を移動させることなく、前記命令の実行を完了させるシステム。
[項目28]
前記命令は、前記第1範囲のビットの第2の端部を暗示的に示す項目27に記載のシステム。
[項目29]
コンピュータに、データを有する第1のソースオペランドと、第1範囲のビットの1以上の端部に対応する位置を示すメモリ又はレジスタ内の1以上の値を明示的に指定する第2のソースオペランドと、デスティネーションオペランドとを含むオペランドを示す命令を処理させて、前記コンピュータに、
第1の端部が前記メモリ又はレジスタ内の前記1以上の値により明示的に指定され、各ビットの値が前記第1のソースオペランドの対応する位置にあるビットの値と等しい前記第1範囲のビットと、前記第1のソースオペランドの対応する位置にあるビットの値に関わらず全てが同じ値を持つ第2範囲のビットとを含む結果を、前記デスティネーションオペランドに格納する段階と、
前記結果の前記第1範囲のビットの位置に関わらず、前記第1のソースオペランドの対応する位置にある同じ値のビットに対して前記結果の前記第1範囲を移動させることなく、前記命令の実行を完了させる段階と
を実行させるためのプログラム。
[項目30]
前記第1範囲のビットの第2の端部を暗示的に示す段階を実行させる項目29に記載のプログラム。

Claims (18)

  1. プロセッサであって、
    命令フェッチロジックと、
    分岐予測ロジックと、
    制御レジスタ、フラグレジスタ、及び64ビットの汎用レジスタを有する複数のレジスタであって、前記64ビットの汎用レジスタの下位32ビットは、32ビットオペランドに対して動作するようにアドレス指定可能であり、前記フラグレジスタは、キャリーフラグ、ゼロフラグ、符号フラグ、およびオーバフローフラグを含む一群のステータスフラグに関連付けられた複数のビットを有する32ビットのレジスタである、前記複数のレジスタと、
    ビット範囲分離命令を受信して復号するための命令復号器であって、前記命令は、対象の範囲のビットの第1の端部を明示的に指定すべく即値を有し、前記命令に関連付けられた即値により、対象の前記範囲のビットの第2の端部を明示的に指定する、前記命令復号器と、
    前記命令のソースオペランドに対するビット範囲分離処理を実行するための実行ユニットであって、前記命令は、32ビットオペランドサイズおよび64ビットオペランドサイズを含む複数のソースオペランドサイズのうちの1つを示す、前記実行ユニットと、
    を備え、
    前記実行ユニットは、
    マスクを生成するためのマスク生成ロジックと、
    前記ソースオペランドおよび前記マスクを受信し、前記ソースオペランドおよび前記マスクに対してビットワイズ演算を実行して、各ビットの値が前記ソースオペランドの対応する位置にあるビットの値と等しい第1範囲のビットと、前記ソースオペランドの対応する位置にあるビットの値に関わらず全てが同じ値を持ち、前記第1範囲のビットおよび前記第2の端部より上位である第2範囲のビットとを含む結果を生成するためのビットワイズ演算ロジックと、
    を有し、
    前記同じ値は、前記命令により、バイナリの1にされることができ、
    前記命令について、前記第1範囲のビットより下位のビットのいずれも、破棄されない、または前記同じ値を有するようにされない
    プロセッサ。
  2. レジスタ・リネームロジック、スケジュールロジック、リオーダ・バッファ、および退避ロジックをさらに備える
    請求項1に記載のプロセッサ。
  3. 前記マスクは、各々が対象の範囲のビットの対応する位置にあるビットに対応し、各々が1の値を有する第1範囲のビットと、各々が対象外の範囲のビットの対応する位置にあるビットに対応し、ゼロの値を有する第2範囲のビットとを有する
    請求項1に記載のプロセッサ。
  4. 前記ビット範囲分離命令の実行は、前記結果の前記第1範囲をシフトすることなく完了する
    請求項1から3のいずれか1項に記載のプロセッサ。
  5. 装置であって、
    前記装置をネットワークに連結するネットワークコントローラと、
    DRAMへのアクセスを提供するためのメモリコントローラと、
    データを格納するための共有キャッシュと、
    前記メモリコントローラおよび前記共有キャッシュに連結された複数のプロセッサコアと、
    を備え、
    前記複数のプロセッサコアのうちの少なくとも1つは、
    L1キャッシュと、
    命令フェッチロジックと、
    分岐予測ロジックと、
    制御レジスタ、フラグレジスタ、及び64ビットの汎用レジスタを有する複数のレジスタであって、前記64ビットの汎用レジスタの下位32ビットは、32ビットオペランドに対して動作するようにアドレス指定可能であり、前記フラグレジスタは、キャリーフラグ、ゼロフラグ、符号フラグ、およびオーバフローフラグを含む一群のステータスフラグに関連付けられた複数のビットを有する32ビットのレジスタである、前記複数のレジスタと、
    ビット範囲分離命令を受信して復号するための命令復号器であって、前記命令は、前記命令に関連付けられた即値により、対象の範囲のビットの第1の端部を明示的に指定し、前記命令に関連付けられた即値により、対象の前記範囲のビットの第2の端部を明示的に指定する、前記命令復号器と、
    前記命令のソースオペランドに対するビット範囲分離処理を実行するための実行ユニットであって、前記命令は、32ビットオペランドサイズおよび64ビットオペランドサイズを含む複数のソースオペランドサイズのうちの1つを示す、前記実行ユニットと、
    を有し、
    前記実行ユニットは、
    マスクを生成するためのマスク生成ロジックと、
    前記ソースオペランドおよび前記マスクを受信し、前記ソースオペランドおよび前記マスクに対してビットワイズ演算を実行して、各ビットの値が前記ソースオペランドの対応する位置にあるビットの値と等しい第1範囲のビットと、前記ソースオペランドの対応する位置にあるビットの値に関わらず全てが同じ値を持ち、前記第1範囲のビットおよび前記第2の端部より上位である第2範囲のビットとを含む結果を生成するためのビットワイズ演算ロジックと、
    を含み
    前記命令は、前記同じ値をバイナリの0にしないようにすることができ、
    前記命令について、前記第1範囲のビットより下位のビットのいずれも、破棄されない、または前記同じ値を有するようにされない
    装置。
  6. 前記複数のプロセッサコアのうちの前記少なくとも1つは、レジスタ・リネームロジック、スケジュールロジック、リオーダ・バッファ、および退避ロジックをさらに備える
    請求項5に記載の装置。
  7. 前記マスクは、各々が対象の範囲のビットの対応する位置にあるビットに対応し、各々が1の値を有する第1範囲のビットと、各々が対象外の範囲のビットの対応する位置にあるビットに対応し、ゼロの値を有する第2範囲のビットとを有する
    請求項5に記載の装置。
  8. 前記ビット範囲分離命令の実行は、前記結果の前記第1範囲をシフトすることなく完了する
    請求項5から7のいずれか1項に記載の装置。
  9. システムであって、
    DRAMと、
    前記DRAMに連結されたメモリコントローラと、
    データを格納するためのフラッシュメモリデバイスと、
    無線トランシーバと、
    ユーザ入力デバイスと、
    前記システムをネットワークに連結するためのネットワークコントローラと、
    データを格納するための共有キャッシュと、
    前記メモリコントローラおよび前記共有キャッシュに連結された複数のプロセッサコアと、
    を備え、
    前記複数のプロセッサコアのうちの少なくとも1つは、
    L1キャッシュと、
    命令フェッチロジックと、
    分岐予測ロジックと、
    制御レジスタ、フラグレジスタ、及び64ビットの汎用レジスタを有する複数のレジスタであって、前記64ビットの汎用レジスタの下位32ビットは、32ビットオペランドに対して動作するようにアドレス指定可能であり、前記フラグレジスタは、キャリーフラグ、ゼロフラグ、符号フラグ、およびオーバフローフラグを含む一群のステータスフラグに関連付けられた複数のビットを有する32ビットのレジスタである、前記複数のレジスタと、
    ビット範囲分離命令を受信して復号するための命令復号器であって、前記命令は、前記命令に関連付けられた即値により、対象の範囲のビットの第1の端部を明示的に指定し、前記命令に関連付けられた即値により、対象の前記範囲のビットの第2の端部を明示的に指定する、前記命令復号器と、
    前記命令のソースオペランドに対するビット範囲分離処理を実行するための実行ユニットであって、前記命令は、32ビットオペランドサイズおよび64ビットオペランドサイズを含む複数のソースオペランドサイズのうちの1つを示す、前記実行ユニットと、
    を有し、
    前記実行ユニットは、
    マスクを生成するためのマスク生成ロジックと、
    前記ソースオペランドおよび前記マスクを受信し、前記ソースオペランドおよび前記マスクに対してビットワイズ演算を実行して、各ビットの値が前記ソースオペランドの対応する位置にあるビットの値と等しい第1範囲のビットと、前記ソースオペランドの対応する位置にあるビットの値に関わらず全てが同じ値を持ち、前記第1範囲のビットおよび前記第2の端部より上位である第2範囲のビットとを含む結果を生成するためのビットワイズ演算ロジックと、
    を含み、
    前記同じ値は、前記命令により、バイナリの1にされることができ、
    前記命令について、前記第1範囲のビットより下位のビットのいずれも、破棄されない、または前記同じ値を有するようにされない
    システム。
  10. 前記複数のプロセッサコアのうちの前記少なくとも1つは、レジスタ・リネームロジック、スケジュールロジック、リオーダ・バッファ、および退避ロジックをさらに備える
    請求項9に記載のシステム。
  11. 前記システムを入力/出力デバイスに連結するためのUSBポートをさらに備える
    請求項9に記載のシステム。
  12. 前記ビット範囲分離命令の実行は、前記結果の前記第1範囲をシフトすることなく完了する
    請求項9から11のいずれか1項に記載のシステム。
  13. 前記マスクは、各々が対象の範囲のビットの対応する位置にあるビットに対応し、各々が1の値を有する第1範囲のビットと、各々が対象外の範囲のビットの対応する位置にあるビットに対応し、ゼロの値を有する第2範囲のビットとを有する
    請求項9に記載のシステム。
  14. 装置であって、
    第1のソースオペランドを示し、かつ第2のソースオペランドを示す命令を復号するための復号器と、
    前記復号器に連結され、前記命令に呼応して結果をデスティネーションに格納するように動作可能な実行ユニットと、
    を備え、
    前記結果は、
    第1の端部と第2の端部とを有する第1範囲のビットであって、前記第2のソースオペランドは、前記第1の端部を明示的に指定する数を提供し、前記第2の端部は、前記命令によって最下位ビットとして暗示的に示され、前記第1範囲のビットの各ビットは、前記第1のソースオペランドの対応する位置にあるビットの値と等しい、前記第1範囲のビットと、
    前記第1のソースオペランドの対応する位置にあるビットの値に関わらず全てのビットが同じ値を持つ第2範囲のビットと、
    を有し、
    前記装置は、前記第1の端部を明示的に指定する前記数が、前記第1のソースオペランドのオペランドサイズより大きい場合にはフラグを設定する
    装置。
  15. 前記第2のソースオペランドは、レジスタ内にある
    請求項14に記載の装置。
  16. 前記第1のソースオペランドのデータは、前記命令のための、32ビットデータおよび64ビットデータのうちいずれかである
    請求項14または15に記載の装置。
  17. 前記第1のソースオペランドの前記データは64ビットデータである
    請求項16に記載の装置。
  18. 装置であって、
    レジスタ内の第1のソースオペランドを示し、かつレジスタまたはメモリ内の第2のソースオペランドを示す命令を復号するための復号器であって、前記第1のソースオペランドは、16ビット、32ビット、および64ビットのうちいずれかを有し、前記第2のソースオペランドは、32ビットおよび64ビットのうちいずれかを有する、前記復号器と、
    前記復号器に連結され、前記命令に呼応して結果をデスティネーションに格納するように動作可能な実行ユニットと、
    を備え、
    前記結果は、
    第1の端部と第2の端部とを有する第1範囲のビットであって、前記第1の端部は、前記命令により暗示的に示される最下位ビットにあり、前記第2の端部は、前記第1のソースオペランドの最下位バイトの値が示すビット位置より1ビット手前であり、前記第1範囲のビットの各ビットは、前記第2のソースオペランドの対応する位置にあるビットの値と等しい、前記第1範囲のビットと、
    前記第2のソースオペランドの対応する位置にあるビットの値に関わらず全てのビットがゼロの値を持つ、前記示されたビット位置から最上位ビットまでの第2範囲のビットと、
    を有し、
    前記装置は、前記第1のソースオペランドの前記最下位バイトの前記値が前記第2のソースオペランドのオペランドサイズより大きい場合にはフラグを設定する
    装置。
JP2018138039A 2009-12-22 2018-07-23 プロセッサ、方法、プログラム、および機械可読記録媒体 Active JP6569969B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/645,307 2009-12-22
US12/645,307 US9003170B2 (en) 2009-12-22 2009-12-22 Bit range isolation instructions, methods, and apparatus

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2015219702A Division JP6375280B2 (ja) 2009-12-22 2015-11-09 プロセッサ、システム、および装置

Publications (2)

Publication Number Publication Date
JP2018160288A true JP2018160288A (ja) 2018-10-11
JP6569969B2 JP6569969B2 (ja) 2019-09-04

Family

ID=44152791

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2010255319A Active JP5456643B2 (ja) 2009-12-22 2010-11-15 ビット範囲分離命令、方法、および装置
JP2014001946A Active JP6134947B2 (ja) 2009-12-22 2014-01-08 システム
JP2015219702A Active JP6375280B2 (ja) 2009-12-22 2015-11-09 プロセッサ、システム、および装置
JP2018138039A Active JP6569969B2 (ja) 2009-12-22 2018-07-23 プロセッサ、方法、プログラム、および機械可読記録媒体

Family Applications Before (3)

Application Number Title Priority Date Filing Date
JP2010255319A Active JP5456643B2 (ja) 2009-12-22 2010-11-15 ビット範囲分離命令、方法、および装置
JP2014001946A Active JP6134947B2 (ja) 2009-12-22 2014-01-08 システム
JP2015219702A Active JP6375280B2 (ja) 2009-12-22 2015-11-09 プロセッサ、システム、および装置

Country Status (5)

Country Link
US (5) US9003170B2 (ja)
JP (4) JP5456643B2 (ja)
CN (3) CN104461461B (ja)
DE (1) DE102010053967A1 (ja)
TW (1) TWI502493B (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9003170B2 (en) 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
CN103946795B (zh) * 2011-12-14 2018-05-15 英特尔公司 用于生成循环对齐计数或循环对齐掩码的系统、装置和方法
CN104126168B (zh) * 2011-12-22 2019-01-08 英特尔公司 打包数据重新安排控制索引前体生成处理器、方法、系统及指令
US10866807B2 (en) 2011-12-22 2020-12-15 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride
CN104011643B (zh) * 2011-12-22 2018-01-05 英特尔公司 打包数据重新安排控制索引产生处理器、方法、系统及指令
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
CN104011646B (zh) 2011-12-22 2018-03-27 英特尔公司 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
CN104011668B (zh) * 2011-12-22 2017-03-22 英特尔公司 用于将源操作数映射到不同范围的系统、装置和方法
US9354877B2 (en) * 2011-12-23 2016-05-31 Intel Corporation Systems, apparatuses, and methods for performing mask bit compression
US9778932B2 (en) * 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9207942B2 (en) * 2013-03-15 2015-12-08 Intel Corporation Systems, apparatuses,and methods for zeroing of bits in a data element
CN104346208B (zh) * 2013-07-31 2017-09-15 上海华虹集成电路有限责任公司 仿真器系统及仿真芯片
US9706228B2 (en) * 2013-10-15 2017-07-11 Qualcomm Incorporated Support for large numbers of views in multi-layer coding
EP3001307B1 (en) 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
US9952987B2 (en) * 2014-11-25 2018-04-24 Intel Corporation Posted interrupt architecture
US9904548B2 (en) 2014-12-22 2018-02-27 Intel Corporation Instruction and logic to perform a centrifuge operation
US9727353B2 (en) 2015-10-30 2017-08-08 International Business Machines Corporation Simultaneously capturing status information for multiple operating modes
US10761849B2 (en) 2016-09-22 2020-09-01 Intel Corporation Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction
CN107193530B (zh) * 2017-04-28 2020-04-24 广州酷狗计算机科技有限公司 一种生成随机数的方法和装置
DE102018208851A1 (de) 2018-06-05 2019-12-05 Infineon Technologies Ag Vorrichtung und Verfahren zum Umwandeln von Eingangsbitfolgen
CN110968347B (zh) * 2019-12-02 2021-09-17 秒针信息技术有限公司 一种数据处理的方法及装置
CN111209041B (zh) * 2019-12-31 2022-05-17 Oppo广东移动通信有限公司 神经网络处理器、片上系统及电子设备

Citations (14)

* 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 情報処理装置
JPS6491228A (en) * 1987-09-30 1989-04-10 Takeshi Sakamura Data processor
JPH02299082A (ja) * 1989-05-12 1990-12-11 Fujitsu Ltd 可変長データを処理するプロセッサ
JPH05100854A (ja) * 1990-05-02 1993-04-23 Motorola Inc Riscマイクロプロセツサおよび演算方法
JPH05150942A (ja) * 1991-05-08 1993-06-18 Hitachi Ltd 演算装置、ビツトフイールド操作演算方法、デコーダ、及び半導体集積回路装置
JPH06131178A (ja) * 1990-06-29 1994-05-13 Digital Equip Corp <Dec> マルチプロセッサ又はパイプラインプロセッサシステムにおい てデータの完全性を確保する方法
JPH06222918A (ja) * 1992-12-18 1994-08-12 Xerox Corp 複合オペランド内の多ビット要素を選択するためのマスク
JPH1196000A (ja) * 1991-06-24 1999-04-09 Hitachi Ltd Cpu及びマイクロコンピュータ
US5930492A (en) * 1997-03-19 1999-07-27 Advanced Micro Devices, Inc. Rapid pipeline control using a control word and a steering word
JP2004013185A (ja) * 2002-06-03 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ
JP2006127460A (ja) * 2004-06-09 2006-05-18 Renesas Technology Corp 半導体装置、半導体信号処理装置、およびクロスバースイッチ
US20090006822A1 (en) * 2006-01-27 2009-01-01 Freescale Semiconductor , Inc. Device and Method for Adding and Subtracting Two Variables and a Constant

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR1590660A (ja) 1968-08-02 1970-04-20
JPS512771A (ja) 1974-06-27 1976-01-10 Kanegafuchi Chemical Ind
US3982229A (en) 1975-01-08 1976-09-21 Bell Telephone Laboratories, Incorporated Combinational logic arrangement
US4569016A (en) 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US5129066A (en) 1987-09-17 1992-07-07 International Business Machines Corporation Bit mask generator circuit using multiple logic units for generating a bit mask sequence
KR100262438B1 (ko) * 1991-05-08 2000-08-01 가나이 쓰도무 연산장치 및 이것을 사용한 비트필드조작 연산방법
JP2984463B2 (ja) 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
JPH0512771A (ja) 1991-07-08 1993-01-22 Matsushita Electric Ind Co Ltd 磁気記録再生装置
US5414821A (en) * 1991-12-17 1995-05-09 Unisys Corporation Method of and apparatus for rapidly loading addressing environment by checking and loading multiple registers using a specialized instruction
JP3155835B2 (ja) 1992-09-30 2001-04-16 キヤノン株式会社 画像形成方法及び装置ユニット
US5497493A (en) 1993-09-30 1996-03-05 Intel Corporation High byte right-shift apparatus with a register alias table
US5564056A (en) 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
US5598546A (en) * 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline
US5704052A (en) 1994-11-06 1997-12-30 Unisys Corporation Bit processing unit for performing complex logical operations within a single clock cycle
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
JP3433588B2 (ja) 1995-10-19 2003-08-04 株式会社デンソー マスクデータ生成回路及びビットフィールド操作回路
US5696711A (en) 1995-12-22 1997-12-09 Intel Corporation Apparatus and method for performing variable precision floating point rounding operations
US6128725A (en) 1997-01-24 2000-10-03 Texas Instruments Incorporated Microprocessor with an instruction for setting or clearing a bit field
US6052522A (en) * 1997-10-30 2000-04-18 Infineon Technologies North America Corporation Method and apparatus for extracting data stored in concatenated registers
US7133040B1 (en) 1998-03-31 2006-11-07 Intel Corporation System and method for performing an insert-extract instruction
US6263426B1 (en) * 1998-04-30 2001-07-17 Intel Corporation Conversion from packed floating point data to packed 8-bit integer data in different architectural registers
US6266769B1 (en) * 1998-04-30 2001-07-24 Intel Corporation Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
US5995122A (en) * 1998-04-30 1999-11-30 Intel Corporation Method and apparatus for parallel conversion of color values from a single precision floating point format to an integer format
US6356951B1 (en) * 1999-03-01 2002-03-12 Sun Microsystems, Inc. System for parsing a packet for conformity with a predetermined protocol using mask and comparison values included in a parsing instruction
US6754687B1 (en) 1999-11-12 2004-06-22 Pts Corporation Methods and apparatus for efficient cosine transform implementations
US6801625B1 (en) 1999-12-08 2004-10-05 Intel Corporation Apparatus and method for stripping parity bits from an input stream
US8874882B1 (en) * 2000-03-30 2014-10-28 Intel Corporation Compiler-directed sign/zero extension of a first bit size result to overwrite incorrect data before subsequent processing involving the result within an architecture supporting larger second bit size values
US6877084B1 (en) * 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
US6757771B2 (en) * 2000-08-09 2004-06-29 Advanced Micro Devices, Inc. Stack switching mechanism in a computer system
US6807622B1 (en) * 2000-08-09 2004-10-19 Advanced Micro Devices, Inc. Processor which overrides default operand size for implicit stack pointer references and near branches
US7237097B2 (en) * 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
US6889312B1 (en) * 2001-04-02 2005-05-03 Advanced Micro Devices, Inc. Selective zero extension based on operand size
US20020188830A1 (en) 2001-06-01 2002-12-12 Brian Boles Bit replacement and extraction instructions
US6968446B1 (en) * 2001-08-09 2005-11-22 Advanced Micro Devices, Inc. Flags handling for system call instructions
CN1271523C (zh) * 2002-08-21 2006-08-23 先进数字芯片株式会社 具有扩展指令的中央处理器
US7353371B2 (en) 2002-12-05 2008-04-01 Intel Corporation Circuit to extract nonadjacent bits from data packets
US7539714B2 (en) * 2003-06-30 2009-05-26 Intel Corporation Method, apparatus, and instruction for performing a sign operation that multiplies
US7321916B2 (en) 2003-07-28 2008-01-22 Intel Corporation Methods and apparatus for extracting integer remainders
US7428631B2 (en) * 2003-07-31 2008-09-23 Intel Corporation Apparatus and method using different size rename registers for partial-bit and bulk-bit writes
US7095897B2 (en) 2003-12-19 2006-08-22 Intel Corporation Zero length or run length coding decision
US7529924B2 (en) 2003-12-30 2009-05-05 Intel Corporation Method and apparatus for aligning ciphered data
US7315937B2 (en) 2004-10-01 2008-01-01 Mips Technologies, Inc. Microprocessor instructions for efficient bit stream extractions
US7334116B2 (en) * 2004-10-06 2008-02-19 Sony Computer Entertainment Inc. Bit manipulation on data in a bitstream that is stored in a memory having an address boundary length
US7558724B2 (en) * 2005-04-19 2009-07-07 Hewlett-Packard Development Company, L.P. Operation region describing a virtual device
US20060259737A1 (en) 2005-05-10 2006-11-16 Telairity Semiconductor, Inc. Vector processor with special purpose registers and high speed memory access
US7529918B2 (en) * 2006-07-21 2009-05-05 Broadcom Corporation System and method for efficiently performing bit-field extraction and bit-field combination operations in a processor
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US8538012B2 (en) 2007-03-14 2013-09-17 Intel Corporation Performing AES encryption or decryption in multiple modes with a single instruction
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
CN101446891A (zh) * 2007-11-27 2009-06-03 上海高性能集成电路设计中心 一种高性能微处理器结构寄存器保留恢复指令的实现方法
JP2010255319A (ja) 2009-04-27 2010-11-11 Ym Kogyo Kk 手摺装置
US8230172B2 (en) * 2009-12-03 2012-07-24 Intel Corporation Gather and scatter operations in multi-level memory hierarchy
US9003170B2 (en) 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
CN104011646B (zh) * 2011-12-22 2018-03-27 英特尔公司 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
WO2013095613A2 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of mask permute instructions

Patent Citations (15)

* 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 情報処理装置
JPS6491228A (en) * 1987-09-30 1989-04-10 Takeshi Sakamura Data processor
JPH02299082A (ja) * 1989-05-12 1990-12-11 Fujitsu Ltd 可変長データを処理するプロセッサ
JPH05100854A (ja) * 1990-05-02 1993-04-23 Motorola Inc Riscマイクロプロセツサおよび演算方法
JPH06131178A (ja) * 1990-06-29 1994-05-13 Digital Equip Corp <Dec> マルチプロセッサ又はパイプラインプロセッサシステムにおい てデータの完全性を確保する方法
JPH05150942A (ja) * 1991-05-08 1993-06-18 Hitachi Ltd 演算装置、ビツトフイールド操作演算方法、デコーダ、及び半導体集積回路装置
JPH1196000A (ja) * 1991-06-24 1999-04-09 Hitachi Ltd Cpu及びマイクロコンピュータ
JPH06222918A (ja) * 1992-12-18 1994-08-12 Xerox Corp 複合オペランド内の多ビット要素を選択するためのマスク
US5930492A (en) * 1997-03-19 1999-07-27 Advanced Micro Devices, Inc. Rapid pipeline control using a control word and a steering word
JP2004013185A (ja) * 2002-06-03 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ
JP2006127460A (ja) * 2004-06-09 2006-05-18 Renesas Technology Corp 半導体装置、半導体信号処理装置、およびクロスバースイッチ
US20090006822A1 (en) * 2006-01-27 2009-01-01 Freescale Semiconductor , Inc. Device and Method for Adding and Subtracting Two Variables and a Constant

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
YEDIDYA HILEWITZ, RUBY B. LEE: "Performing Advanced Bit Manipulations Efficiently in General-Purpose Processors", PROCEEDINGS OF THE 18TH IEEE SYMPOSIUM ON COMPUTER ARTHMETIC(ARITH'07), JPN6013007662, June 2007 (2007-06-01), pages 251 - 260, XP031116347, ISSN: 0004034691 *
インテル ITANIUM アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 第3巻:命令セット・リフ, JPN6017040756, October 2002 (2002-10-01), pages 3 - 48, ISSN: 0004034689 *
山口哲弘: "x64で本格化する64ビットWindowsの時代 Part1 x64の威力", 日経WINDOWSプロ, JPN6016044733, January 2005 (2005-01-01), JP, pages 54 - 73, ISSN: 0004034690 *

Also Published As

Publication number Publication date
TWI502493B (zh) 2015-10-01
CN104461461A (zh) 2015-03-25
US9003170B2 (en) 2015-04-07
US20150143084A1 (en) 2015-05-21
US10656947B2 (en) 2020-05-19
DE102010053967A1 (de) 2011-07-14
JP2016026365A (ja) 2016-02-12
US10579380B2 (en) 2020-03-03
JP2014081953A (ja) 2014-05-08
JP5456643B2 (ja) 2014-04-02
CN109375950A (zh) 2019-02-22
US20150100760A1 (en) 2015-04-09
US20180203698A1 (en) 2018-07-19
JP6375280B2 (ja) 2018-08-15
CN102109977A (zh) 2011-06-29
CN102109977B (zh) 2015-06-24
CN109375950B (zh) 2023-06-20
JP2011134304A (ja) 2011-07-07
JP6134947B2 (ja) 2017-05-31
US10579379B2 (en) 2020-03-03
TW201137741A (en) 2011-11-01
CN104461461B (zh) 2018-10-09
US20110153997A1 (en) 2011-06-23
JP6569969B2 (ja) 2019-09-04
US10372455B2 (en) 2019-08-06
US20150100761A1 (en) 2015-04-09

Similar Documents

Publication Publication Date Title
JP6569969B2 (ja) プロセッサ、方法、プログラム、および機械可読記録媒体
JP5736028B2 (ja) 3個のソースオペランドを加算する加算命令
JP6034352B2 (ja) マルチコアプロセッサ、システムオンチップ、及び、携帯電話機
RU2656730C2 (ru) Процессоры, способы, системы и команды для сложения трех операндов-источников с плавающей запятой
US10649774B2 (en) Multiplication instruction for which execution completes without writing a carry flag
JP2018507453A (ja) 命令フローを最適化するチェックを実行するための装置および方法
JP2023035849A (ja) Bfloat16平方根および/または逆数平方根命令
JP2018503162A (ja) スピンループジャンプを実行するための装置および方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180822

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180822

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190614

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190725

R150 Certificate of patent or registration of utility model

Ref document number: 6569969

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