(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0008】
以下の詳細な説明において命令実装の詳細、データの種類、レジスタの種類、レジスタの配置、プロセッサの種類、システム構成等、多くの特定の詳細を述べる。しかし、実施形態はこれら特定の詳細なしに実施可能である。また、公知の回路、構造、および技術等に関して、詳細に説明しないことにより、本発明の実施形態の本質を曖昧にしないようにしている箇所もある。
【0009】
実施形態は、回転命令を実行し、キャリーフラグの読み出しを伴わずに回転命令の実行を完了する実行部を有する命令処理装置に係る。
【0010】
図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デュオプロセッサ、インテル(登録商標)ペンティアム(登録商標)プロセッサ、およびインテル(登録商標)セルロン(登録商標)プロセッサが含まれる。
【0011】
また、命令処理装置は専用プロセッサであってもよい。適切な専用プロセッサの代表的な例には、これらに限定はされないが、ネットワークプロセッサ、通信プロセッサ、暗号化プロセッサ、グラフィックスプロセッサ、コプロセッサ、エンベデッドプロセッサ、およびデジタルシグナルプロセッサ(DSP)がほんの一例として含まれる。これらプロセッサもCISC、RISC、VLIW、これらの様々なハイブリッド、またはその他のプロセッサ全般に基づいていてよい。
【0012】
また他の実施形態では、命令処理装置はコントローラ(例えばマイクロコントローラ)、または、命令処理機能を有するその他の種類のロジック回路であってよい。またさらなる実施形態では、命令処理装置は命令を実行する暗号化回路であってもよい。
【0013】
図1に戻ると、利用中に命令処理装置は、回転命令102の一実施形態を受信することができる。一例では、回転命令は、メモリからあるいはソフトウェアから受信されてよい。回転命令は、命令処理装置が認識している機械命令または制御信号を表してよい。命令処理装置は、回転命令に応じて、および/または、回転命令が指定するように、データに回転処理を行い、機械命令に応じて、またはその結果として、回転された結果を格納する機能を有する専用の、または特別な回路、あるいは他のロジック(例えばハードウェアおよび/またはファームウェアと組み合わせられたソフトウェア)を有してよい。
【0014】
示している命令処理装置の実施形態には、命令復号器104が含まれる。復号器は、回転命令を受信して復号することができる。復号器は、元の回転命令を反映する、あるいは、これから導出される、1以上のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、その他の命令、あるいはその他の制御信号を生成して出力することができる。復号器は、様々な異なるメカニズムを利用して実装することができる。適切なメカニズムの例には、これらに限定はされないが、マイクロコードROM、ルックアップテーブル、ハードウェア実装、PLA(programmable logic array)等が含まれる。
【0015】
復号器は装置の必須のコンポーネントではない。1以上の他の実施形態では、装置はこの代わりに、命令エミュレータ、命令翻訳プログラム、命令モーファ、命令解釈プログラム、その他の命令変換ロジックを含むことができる。本技術分野では、様々な異なる種類の命令エミュレータ、命令モーファ、命令翻訳プログラム等が公知である。命令変換ロジックは回転命令を受信して、回転命令をエミュレート、翻訳、変形、解釈したり、回転命令を変換したりして、元の回転命令に対応する1以上の命令または制御信号を出力することができる。命令変換ロジックは、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせによる実装が可能である。場合によっては、命令変換ロジックの一部または全てが、命令処理装置の残りからオフダイの位置に設けられてもよい(例えば、別のダイとして、またはシステムメモリ内に設けられてもよい)。場合によっては、命令処理装置は復号器および命令変換ロジック両方を備えてもよい。
【0016】
図1に戻ると、命令処理装置は実行ユニット106を含む。一例では、実行ユニットは、論理演算装置(arithmetic logic unit)、または回転処理を行う機能を有する別の種類の論理ユニットを含むことができる。実行ユニットは、回転ユニット108を含む。様々な種類の回転ユニット(例えばバレル回転器)が本技術分野で公知である。本発明の公知の回転回路またはユニットの特定のものに限定されない。
【0017】
示されている実施形態では、実行ユニットは、復号器の出力に連結されている、さもなくば、これと通信可能状態である。「連結(couple)」という用語は、2以上のエレメントが直接的な電気接触または接続状態にあることを意味する場合がある。しかし「連結」という用語は、さらに、2以上のエレメントが直接的な接続状態にはないが、互いと協働または相互作用することも意味する(例えば間にコンポーネントを介在させることで)。一例を挙げると、復号器および実行ユニットが、これらの間に介在するオプションのバッファおよび/またはその他の本技術分野で公知であるコンポーネント(1または複数)によって、互いと連結される場合がこれに相当する。復号器が回転命令を復号した結果、実行ユニットは、回転命令を反映する、またはこれから導出される1以上のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、その他の命令あるいはその他の制御信号を受信して実行してよい。また実行ユニットは、上述した命令変換ロジックから命令または制御信号を受信して実行してよい。
【0018】
1以上の実施形態では、実行ユニットは、ソースオペランド(SRC)と回転量とを示す回転命令102の結果、回転命令が示すデスティネーションオペランド(DEST)に結果を格納する機能を有してよく、この結果は、該回転量で回転させたソースオペランドを有している。1以上の実施形態では、回転命令は右回転命令であってよく、これによりデータが右に回転させられてよい。回転により最下位ビット(LSB)から外れたビットは、最上位ビット(MSB)へと回転またはラップバック(wrap back)させられてよい。また、回転命令は左回転命令であってもよい。回転中にデータは失われず、単に回転または再配置される。実行ユニットは、命令または回転命令から導出された他の制御信号を実行して、ソースオペランドに回転量分の回転処理を行う機能を有する回路または他の実行ロジック(例えばハードウェアおよび/またはファームウェアと組み合わせられたソフトウェア)を含むことができる。
【0019】
回転命令は、ソースオペランドおよびデスティネーションオペランド、ならびに、回転量を暗示的に示す、および/または、明示的に指定することができる(例えば、1以上の専用フィールドまたはビットのセットにより)。適切なオペランドのソースおよび回転量の例には、レジスタ、メモリ、命令の即値、およびこれらの組み合わせが含まれてよい。様々な実施形態では、ソースオペランドおよびデスティネーションオペランドは16ビット、32ビット、または64ビットのオペランドであってよいが、これは必須ではない。
【0020】
1以上の実施形態では、ソースオペランドおよびデスティネーションオペランドの一部または全てがレジスタセット110のレジスタに格納されていてよい。レジスタセットはレジスタファイルの一部であってよく、および潜在的に他のレジスタ(例えばステータスレジスタ、フラグレジスタ等)を含んでよい。レジスタは、データ格納に利用されうる格納位置またはデバイスであってよい。レジスタは物理的に実行ユニットとともにダイ上に配置されることがある。レジスタはプロセッサの外部から、またはプログラマの視点から可視であってよい。例えば命令は、レジスタに格納されているオペランドを特定することができる。本明細書で記載するデータの格納および提供が可能でありさえすれば、様々な異なる種類のレジスタを利用することができる。レジスタはリネームされてもされなくてもよい。適切なレジスタの例には、これらに限定はされないが、専用物理レジスタ、レジスタのリネームを行って動的に割り当てられる物理レジスタ、専用物理レジスタおよび動的に割り当てられる物理レジスタの組み合わせ等が含まれる。また、ソースオペランドおよびデスティネーションオペランドのうち1以上を、レジスタとは異なる格納位置に(例えばシステムメモリのある位置に)格納することもできる。
【0021】
さらに図の説明に戻ると、プロセッサその他の種類の命令実行装置はしばしば複数の演算フラグ114を含むことができる。演算フラグは少なくとも1つのキャリーフラグ116を含む。1以上の実施形態では、フラグは、レジスタ112(ステータスレジスタ、フラグレジスタ、または条件コードレジスタ(CCR)等)に含まれていてよい。
【0022】
プロセッサおよびその他の様々な種類のロジックデバイスがしばしば演算フラグを利用する。フラグは1以上のビットを、しばしばレジスタ内に含みうる。フラグはレジスタ内のビットである必要はない。フラグはフリップフロップ回路を含んでよい。ビットフラグはバイナリ値(例えばバイナリ1またはバイナリ0)を格納してよい。複数のビットがバイナリ値のシーケンスまたはコードを格納することができる。これらバイナリ値またはバイナリ値のシーケンスは、フラグの異なる値を表してよい。これらフラグの異なる値は、プロセッサまたはその他のロジックデバイスに割り当てられてもよいし、その意味が暗に示されてもよい。フラグは様々に異なる目的に利用されてよい。フラグを、処理のステータス、状態、条件、または結果をプロセッサその他のロジックデバイス内に記録する目的に利用する場合もある。
【0023】
キャリーフラグは、プロセッサその他のロジックデバイスに通常設けられる公知の種類の演算フラグである。キャリーフラグは、算術演算におけるオーバフローがないかを示すのに利用することができる。例えば、キャリーフラグは、前の演算中にオーバフローが生じた場合に第1の値を有してよく、そのようなオーバフローがない場合には、キャリーフラグは第2の値を有してよい。キャリーフラグは、算術演算によって、任意のレジスタまたは格納位置のビット数よりも大きさが大きい結果が生成されたことを示す目的に利用されてもよい。例えば1以上の実施形態では、キャリーフラグは、算術演算による結果の最上位ビットからのキャリーまたはボローが生じた場合に1に設定されてよいシングルビットであってよく、そうではない場合にはキャリーフラグは0に設定されてよい。キャリーフラグは、加算または減算といった算術演算でよく利用される。
【0024】
1以上の実施形態では、演算フラグはオーバフローフラグを含んでよい。オーバフローフラグは、プロセッサその他のロジックデバイスでよく利用される別の公知の種類の演算フラグである。オーバフローフラグはしばしばレジスタのシングルビットである。オーバフローフラグは大まかにいって、キャリーフラグの符号付きバージョンに相当すると言える。オーバフローは、演算中に演算のオーバフローが生じたことを示す。オーバフローフラグは、最上位ビット(MSB)が設定される、またはクリアされるときに設定される。オーバフローフラグは、結果が過剰に大きな正の数である場合、または過剰に小さい負の数である場合に設定することで、デスティネーションオペランドに収めることができるようになる。オーバフローフラグを利用することで、前の演算が、それを生成したオペランドの符号と不一致である符号の符号付きの数を生じたことを示すことができる。例えば、オーバフローフラグは、2つの正の数の加算が負の結果を生じた場合、または、2つの負の数の加算が正の結果を生じた場合に設定されてよい。キャリーフラグおよびオーバフローフラグの機能および利用法についての完全な理解は、本明細書の実施形態を理解しようとする上ではあまり重要ではない。
【0025】
1以上の実施形態では、演算フラグは、1以上の他の種類の演算フラグを含むことができる。時折プロセッサまたは他のロジックデバイスに含まれることがある他の演算フラグには、符号フラグ、ゼロフラグ、補助キャリーフラグ、パリティフラグ、またはこれらの組み合わせが含まれる。これらフラグの全てが全てのプロセッサその他のロジックデバイスに含まれるわけではない。加えて、これらの様々なフラグに対して別の名称が利用される場合もある。
【0026】
1以上の実施形態では、実行ユニットは、キャリーフラグの読み出しを伴わずに回転命令の実行を完了する機能を有してよい。これは図面では矢印により大きな「X」でコンセプトとして表されている。
【0027】
1以上の実施形態では、実行ユニットは、オーバフローフラグの読み出しを伴わずに回転命令の実行を完了する機能を有してよい。1以上の実施形態では、実行ユニットは、キャリーフラグまたはオーバフローフラグの書き込みを伴わずの回転命令の実行を完了する機能を有してよい。1以上の実施形態では、実行ユニットは、キャリーフラグ、オーバフローフラグ、符号フラグ、ゼロフラグ、補助キャリーフラグ、またはパリティフラグのいずれの読み出しも伴わずに、回転命令の実行を完了する機能を有してよい。1以上の実施形態では、実行ユニットは、キャリーフラグ、オーバフローフラグ、符号フラグ、ゼロフラグ、補助キャリーフラグ、またはパリティフラグのいずれの読み出しも書き込みも伴わずに、回転命令の実行を完了する機能を有してよい。1以上の実施形態では、いずれの演算フラグの読み出しも書き込みも伴わずに、回転命令の実行を完了する機能を有してよい。また1以上の実施形態では、いずれの演算フラグの読み出しを伴わずに、全ての演算フラグを書き込む機能を有してよい。
【0028】
説明を曖昧にしないようにする意図から、比較的簡単な命令処理装置を示し、説明している。しかし他の実施形態では複数の実行ユニットを利用することもできることは理解されたい。例えば、装置は、複数の異なる種類の実行ユニット(例えば論理ユニット、論理演算装置(ALU)、演算装置、整数ユニット(integer unit)等)を含んでよい。これらユニットのうち少なくとも1つが、本明細書で開示する回転命令の一実施形態に応じたものであってよい。また他の実施形態には、複数のコア、論理プロセッサ、または実行エンジンが含まれてよい。本明細書で開示する回転命令を実行する機能を有する実行ユニットは、少なくとも1つ、少なくとも2つ、殆どあるいは全てのコア、論理プロセッサ、または実行エンジン内に含まれてよい。
【0029】
命令処理装置はさらに、オプションとして1以上の公知の他のコンポーネントを含んでもよい。例えば、他の実施形態では、オプションとして命令フェッチロジック、プレデコードロジック、スケジュールロジック、リオーダ・バッファ、分岐予測ロジック、退避ロジック、レジスタ・リネームロジック、またはこれらの組み合わせを含んでよい。これらのコンポーネントは、従来の方法での実装、または、当業者であれば本開示に基づいて想到可能な微調整を加えることによる実装が可能である。本実施形態を理解する目的にはこれ以上これらのコンポーネントの詳述は不要であるが、これらコンポーネントの説明は刊行物にあるのでそれを参照されたい。当技術分野ではこれらコンポーネントの文字通り多くの異なる組み合わせおよび構成が公知である。本発明の範囲は、これら公知の組み合わせおよび構成のいずれにも限定はされない。実施形態は、これらオプションであるコンポーネントがあってもなくても実装可能である。
【0030】
図2は、回転命令の実施形態を処理する方法220の実施形態のブロックフロー図である。様々な実施形態では、方法は、汎用プロセッサ、専用プロセッサ(例えばグラフィックスプロセッサまたはデジタルシグナルプロセッサ(DSP))、ハードウェアアクセラレータ(例えば暗号化アクセラレータ)、あるいは、別の種類のロジックデバイスまたは命令処理装置により行うことができる。
【0031】
回転命令は、ブロック221で受信されてよい。回転命令はソースオペランドおよび回転量を示してよい。
【0032】
ブロック222で、回転命令が示すデスティネーションオペランドに結果を格納してよい。結果は、回転量で回転させたソースオペランドを有してよい。
【0033】
回転命令の実行はブロック223で完了してよい。1以上の実施形態では、回転命令の実行は、キャリーフラグの読み出しを伴わずに完了してよい。
【0034】
1以上の実施形態では、実行ユニットは、オーバフローフラグの読み出しを伴わずに回転命令の実行を完了する機能を有してよい。1以上の実施形態では、実行ユニットは、キャリーフラグまたはオーバフローフラグの書き込みを伴わずの回転命令の実行を完了する機能を有してよい。1以上の実施形態では、実行ユニットは、キャリーフラグ、オーバフローフラグ、符号フラグ、ゼロフラグ、補助キャリーフラグ、またはパリティフラグのいずれの読み出しも伴わずに、回転命令の実行を完了する機能を有してよい。実行ユニットは、キャリーフラグ、オーバフローフラグ、符号フラグ、ゼロフラグ、補助キャリーフラグ、またはパリティフラグのいずれの読み出しも書き込みも伴わずに、回転命令の実行を完了する機能を有してよい。1以上の実施形態では、いずれの演算フラグの読み出しも書き込みも伴わずに、回転命令の実行を完了する機能を有してよい。また1以上の実施形態では、いずれの演算フラグの読み出しを伴わずに、全ての演算フラグを書き込む機能を有してよい。
【0035】
キャリーフラグの読み出しを伴わない回転命令の実行の完了、場合によってはキャリーフラグまたはオーバフローフラグのいずれの読み出しも伴わない回転命令の実行の完了、また、場合によってはいずれの演算フラグの読み出しも伴わない回転命令の実行の完了により、回転命令の実行速度を上げることができる。キャリーフラグの読み出しには時間がかかる。さらには、読み出されたキャリーフラグその他の演算フラグを回転命令が利用しないことも多い。従ってこれらフラグの読み出しには時間がかかり、しかもこれらのフラグを利用しない場合も多いということなので、キャリーフラグの読み出しおよび/またはキャリーフラグおよび1以上の他のフラグの読み出しを行わないことにより、回転命令の実行速度を上げることができる。
【0036】
加えて、キャリーフラグの読み出しを伴わない回転命令の実行の完了、場合によってはキャリーフラグまたはオーバフローフラグのいずれの読み出しも伴わない回転命令の実行の完了、また、場合によってはいずれの演算フラグの読み出しも伴わない回転命令の実行の完了により、フラグに対する依存性によるシリアライゼーションを低減することができる。これらシリアライゼーションを低減させることで並列処理、アウトオブオーダ実行、および/または、投機的な実行のより良い利用が可能となり、多くのアルゴリズムの速度を上げることができる。
【0037】
回転命令は、フラグを修正する他の命令とともにアルゴリズムに組み込まれることが多い。例えば回転命令は、AND命令、XOR命令等の論理命令とともにアルゴリズムに組み込まれることが多い。通常これらの論理命令はフラグを更新する。公知のROR命令はフラグを読み出すことができるので、フラグに対する依存性があるということになる。この結果、通常、ROR命令は、実行前に、あるいは少なくとも完全実行前に、前の論理命令の実行が完了するのを待つ必要がある。これによりフラグに対する依存性によるシリアライゼーションが生じる可能性がある。これはデータに対する依存性によるものではなく、フラグに対する依存性によるものである点に留意されたい。ハッシュおよび暗号化アルゴリズム等の、いくらかのアルゴリズムにおいては、論理および回転命令の両方が比較的大きな割合で利用される傾向がある。従ってこれらアルゴリズムにおけるフラグに依存するシリアライゼーションの量は比較的高いことが多い。
【0038】
これらシリアライゼーションは並列処理、アウトオブオーダ実行、および/または投機的な実行を妨害する傾向がある。例えばアウトオブオーダの機械は、データに対する依存性が全くなかったとしても、論理命令の前に公知のROR命令の実行を行うことができない。これにより、これらアルゴリズムの実行速度が遅くなる傾向にある。
【0039】
しかし上述したように1以上の実施形態では、回転命令は、キャリーフラグの読み出しを伴わずに完了する場合があり、場合によってはキャリーフラグまたはオーバフローフラグの読み出しを伴わずに完了する場合があり、または、場合によってはいずれの演算フラグの読み出しも伴わずに完了する場合がある。これによってフラグ(1または複数)に対する依存性が低減する場合があり、回転命令が論理命令またはフラグを修正する他の命令とともに利用されるアルゴリズムにおけるシリアライゼーションの低減につながることがある。この結果、並列処理、アウトオブオーダ実行、および/または、投機的な実行からより大きな利点を得ることができる。これにより、ハッシュ、暗号化、その他のアルゴリズムの速度および/または効率が向上する傾向にある。
【0040】
1以上の実施形態では、回転命令はオペランドの定義を有すことができ、さらに様々なアルゴリズムの実行速度を上げることができる。前に、公知のROR命令が、ソースオペランドをデスティネーションオペランドで上書きする、と述べたことを想起されたい。この結果、ソースオペランドを移動させない限り(MOVその他の移動命令により)、あるいは保存しない限り、ROR命令を実行させると、ソースオペランドはデスティネーションオペランドで上書きされてしまう。言い換えるとソースオペランドが破壊される。しかしアルゴリズムの中には、回転命令の実行以外にもソースオペランドを必要とするものがある。従ってこれらのアルゴリズムはさらなるMOVその他の移動命令、または、ソースオペランドを保存する他の種類の命令を含む場合が多い。極端なケースでは、これらの追加される命令の数がかなり重要になる場合もある。これらの追加される命令は復号が必要であり、ひいてはバッファリングされて実行される必要がある場合がある。
【0041】
1以上の実施形態では、回転命令はソースオペランドを明示的に指定し、デスティネーションオペランドを明示的に指定する。これにより、異なるレジスタその他の格納位置がソースオペランドおよびデスティネーションオペランドにより明示的に指定されるので、ソースオペランドをデスティネーションオペランドで上書きしてしまうことがなくなり好適である。この結果、回転命令の完了時にソースオペランドおよびデスティネーションオペランドの両方を利用可能とすることができる。これは幾らかの利点を生じる可能性がある。まず第1に、データ移動命令、あるいはソースオペランドを保存するその他の種類の命令を回避することができる場合がありうる。これにより復号、ひいてはバッファリングおよび実行が必要となる命令の数を低減させることができる。第2に、復号されたストリームバッファ(DSB)等を利用する場合、命令の数を低減させることで、復号された命令のループをDSB内に収めることができるようになる。これにより、速度を制限する復号処理を回避することで処理速度を上げることができるようになるという利点が生じる。
【0042】
回転命令を多用する傾向がある2つの分野がハッシュおよび暗号化である。過去数年の間に、ハッシュおよび暗号化の利用は両方とも顕著に増加した。益々多くのインターネットその他のネットワーク処理が暗号化によりセキュアなものとされている。この結果、専用暗号化アクセラレータ、エンベデッド暗号化プロセッサ、数多くの接続をサポートするサーバ等が、かなり頻繁にこのような暗号化アルゴリズムを実行しうる。従ってこれらデバイスの性能は、これら暗号化アルゴリズムを実行するときの速度および/または効率により大きな影響を受けうる。これよりは程度は低いではあろうが、デスクトップおよびラップトップコンピュータその他のデバイスも、これらの暗号化アルゴリズム等を実行する。加えて、ある種のハッシュおよび暗号化アルゴリズムにおける回転命令の比率は比較的高い傾向にある。例えば、あるハッシュおよび暗号化アルゴリズムにおいては、命令のうち10%以上が回転命令である。この結果、回転命令の実行速度を上げることで、アルゴリズムの実行速度全体に大きな影響が出てくる場合がある。もちろん回転命令はハッシュおよび暗号化以外の幅広い用途がある(例えば、データ圧縮、伸張、データスクランブル、デスクランブル等)。
【0043】
回転量に関しては、回転命令の様々な実施形態が、様々な異なる方法で回転量を指定することができる。1以上の実施形態では、回転命令は、即値により回転量を示す、または指定する。即値は、回転命令の一部である、または回転命令に含まれるものとして直接符号化されるオペランドを表すことができる。即値バイトの値は、imm8で表されることが多い。
【0044】
別のオプションとしては、1以上の実施形態で、回転命令は、回転量を有する第2のソースオペランドを暗示的に示すことができる。例えば、回転量は、暗示的なレジスタその他の格納位置に格納することができる。特定の実施形態では、暗示的なレジスタをCLと称される汎用レジスタとすることができる。
【0045】
また別のオプションとしては、1以上の実施形態で、回転命令は、回転量を有する第2のソースオペランド(レジスタ等)を明示的に指定することができる。例えば、1以上の実施形態では、回転命令は、オプションとしてVEX符号化を利用することができる。VEX符号化によって命令は、追加オペランドを明示的に指定することができる。特定の例においては、回転命令は演算DEST=ROTATE(SRC by SRC2)を特定してよい。VEXのさらなる詳細は、必要に応じて、インテル(登録商標)64およびIA−32アーキテクチャソフトウェア開発者用マニュアル第2A巻:命令セットレファレンス、A−M、オーダ番号:253666−032US,2009年9月を参照されたい。
【0046】
図3は、適切なフラグレジスタの特定の実施形態を表すEFLAGSレジスタ330を示す。この特定のレジスタおよびこれらの特定のフラグは当然ながら必須ではない。
【0047】
EFLAGSレジスタは32ビットのレジスタであり、一群のステータスフラグ、制御フラグ、および一群のシステムフラグを含む。ステータスフラグには、キャリーフラグ(CF、ビット0)、パリティフラグ(PF、ビット2)、補助キャリーフラグ(AF、ビット4)、ゼロフラグ(ZF、ビット6)、符号フラグ(SF、ビット7)、およびオーバフローフラグ(OF、ビット11)が含まれる。
【0048】
システムフラグには、トラップフラグ(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はリザーブされている。
【0049】
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月を参照されたい。
【0050】
1以上の実施形態では、回転命令は、汎用レジスタセット内のソースオペランドおよび/またはデスティネーションオペランドを示してよい。さらにこれらコンセプトを示すべく、様々なx86アーキテクチャプロセッサで利用可能な適切な汎用レジスタの例示的な実施形態を示すが、これら特定のレジスタは当然ながら必須ではない。
【0051】
図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ビットのダブルワードの符号なし整数を格納することができる。
【0052】
図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ビットのクワッドワードの符号なし整数を格納することができる。
【0053】
汎用レジスタのさらなる記述に関しては、必要に応じて、インテル(登録商標)64およびIA−32アーキテクチャソフトウェア開発者用マニュアル第1巻:基本アーキテクチャ、オーダ番号:253665−032US、2009年9月を参照されたい。これら特定のレジスタはあくまで例示であり、必須ではない。
【0054】
特定の実施形態における回転命令はRORX−フラグ命令に影響を与えない右回転論理である。RORX命令は2つのオペランドの命令であり、その両方が明示的なオペランドである。表1にRORX命令用の命令オペランド符号化を示す。
【表1】
【0055】
オペランド1は明示的に指定されており、32ビットモードの命令については32ビットの汎用レジスタ(reg)に、64ビットモードの命令については64ビットの汎用レジスタにあってよい。オペランド1に対しては書き込み(W)が許されている。
【0056】
オペランド2は明示的に指定されており、32ビットモードの命令については32ビットの汎用レジスタ(r)またはメモリ(m)、64ビットモードの命令については64ビットの汎用レジスタまたはメモリにあってよい。オペランド2に対しては読み出し(R))が許されている。
【0057】
オペランド3およびオペランド4はRORXでは利用できない。RORXは、回転量を指定する即値バイト(imm8)を有する。
【0058】
図6は、回転命令の特定の実施形態を表すRORX命令の記述を示す。16ビットのオペランドサイズは可能ではあるが、現在は符号化することができない。
RORX命令(フラグに影響を与えない右回転論理)の記述は、演算フラグに影響を与えずに第1のオペランドのビットを右にIMM8回、回転させること、命令は演算フラグの読み出しまたは書き込みを行わないこと、デフォルトのオペランドサイズは32ビットであること、64ビットのオペランドサイズがREX.W=1を利用すること、この命令の前の66Hのプレフィックスバイトが#UDを生じること、及び、命令はいずれの演算フラグにも影響を与えないことを含む。
【0059】
図7は、回転命令の特定の実施形態を表すRORX命令の擬似コード処理を示す。SRCは明示的に指定されたソースオペランドのことであり、DESTはデスティネーションオペランドのことであり、imm8は、回転量を指定するのに利用される即値バイトのことであり、シンボル「>>」は右シフトのことであり、シンボル「<<」は左シフトのことであり、シンボル「|」はビットワイズORのことである。この図は、回転を2つのシフトとして捕らえることができることを示している。
【0060】
いずれのフラグもRORXの影響を受けない。RORXにはSIMD浮動小数点に関する例外は存在しない。オペコード、符号化、REX、およびVEXプレフィックスのさらなる記述に関しては、インテル(登録商標)64およびIA−32アーキテクチャソフトウェア開発者用マニュアル第2A巻:命令セットレファレンス、A−M、オーダ番号:253666−032US、2009年9月を参照されたい。
【0061】
1以上の実施形態には、機械(例えば実行ユニットまたはプロセッサ)により実行されるとデータ回転処理を行い、キャリーフラグの読み出しを伴わずに実行を完了する回転命令を格納した、有形の機械アクセス可能な、および/または、機械可読媒体を含む製品が含まれる。有形媒体は1以上の固体材料を含んでよい。媒体は、例えば機械アクセス可能な形態で情報を提供(例えば格納)するメカニズムを含むことができる。例えば、媒体はオプションとして記録可能媒体(例えばフロッピー(登録商標)ディスク、光格納媒体、光ディスク、CD−ROM,磁気ディスク、光磁気ディスク、ROM、PROM、EPROM、EEPROM、RAM、SRAM、DRAM、フラッシュメモリ、およびこれらの組み合わせ)を含むことができる。
【0062】
適切な機械には、これらに限られないが、ほんの数例を挙げると、実行ユニット、汎用プロセッサ、専用プロセッサ(例えばグラフィックスプロセッサおよび暗号化プロセッサ)、暗号化アクセラレータ、ネットワーク通信プロセッサ、コンピュータシステム、ネットワークデバイス、モデム、PDA,携帯電話機、および、幅広い範囲の他の電子デバイスが1以上の実行ユニットとともに含まれる。
【0063】
また別の実施形態は、実行ユニットを有する、および/またはここで開示する方法を実行するコンピュータシステム、エンベデッドシステム、その他の電子デバイスに係る。
【0064】
図8は、適切なコンピュータシステム801の第1の実施形態のブロック図である。コンピュータシステムはプロセッサ800を含む。プロセッサは、少なくとも1つの回転命令802を実行する機能を有する少なくとも1つの実行ユニット806を含む。
【0065】
プロセッサは、バス(例えばフロントサイドバス)または他のインターコネクト880を介してチップセット881に連結される。インターコネクトは、プロセッサと、システムの他のコンポーネントとの間におけるデータ信号のやりとりをチップセット経由で行うときに利用可能である。
【0066】
チップセットは、メモリコントローラハブ(MCH)882として知られているシステムロジックチップを含む。MCHは、フロントサイドバスまたは他のインターコネクト880に連結される。
【0067】
メモリ886はMCHに連結される。様々な実施形態では、メモリは、RAMを含むことができる。DRAMは、一部の(全てではない)コンピュータシステムで利用されるRAMの一例である。図示されているように、メモリは、命令(例えば1以上の回転命令)887およびデータ888を格納するために利用することができる。
【0068】
MCHにはコンポーネントインターコネクト885も連結される。1以上の実施形態では、コンポーネントインターコネクトは、1以上のPCIe(peripheral component interconnect express)インタフェースを含むことができる。コンポーネントインターコネクトは、他のコンポーネントを、システムの残りのコンポーネントに、チップセット経由で連結することができる。これらコンポーネントの一例は、グラフィックチップあるいは他のグラフィックデバイスであるが、これはオプションであり必須ではない。
【0069】
チップセットも、I/O(入力/出力)コントローラハブ(ICH)884を含む。ICHは、ハブインタフェースバスその他のインターコネクト883を介してMCHに連結される。1以上の実施形態では、バスその他のインターコネクト883はDMI(Direct Media Interface)を含むことができる。
【0070】
ICHにはデータ格納装置889が連結される。様々な実施形態では、データ格納装置には、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、CD−ROMデバイス、フラッシュメモリデバイス等、またはこれらの組み合わせが含まれてよい。
【0071】
ICHにはさらに、第2のコンポーネントインターコネクト890が連結される。1以上の実施形態では、第2のコンポーネントインターコネクトは、1以上のPCIeインタフェースを含むことができる。第2のコンポーネントインターコネクトは、様々な種類のコンポーネントを、システムの残りのコンポーネントに、チップセット経由で連結することができる。
【0072】
ICHにはまたさらに、シリアル拡張ポート891が連結される。1以上の実施形態では、シリアル拡張ポートは、1以上のUSB(universal serial bus)ポートを含むことができる。シリアル拡張ポートは、様々な他の種類の入力/出力デバイスを、システムの残りのコンポーネントにチップセット経由で連結することができる。
【0073】
ICHにオプションとして連結可能なこの他のコンポーネントの幾らかの例には、これらに限定はされないが、オーディオコントローラ、無線トランシーバ、およびユーザ入力デバイス(例えばキーボード、マウス)が含まれる。
【0074】
ICHにはさらにネットワークコントローラが連結される。ネットワークコントローラは、システムをネットワークに連結することができる。
【0075】
1以上の実施形態では、コンピュータシステムは、ワシントン州Redmondのマイクロソフトコーポレーション社から入手可能なWINDOWS(登録商標)オペレーティングシステムのバージョンを実行することができる。また他のオペレーティングシステム(例えばUNIX(登録商標)、Linux(登録商標)、またはエンベデッドシステム)の利用も可能である。
【0076】
これは適切なコンピュータシステムの一例にすぎない。例えば、1以上の他の実施形態では、プロセッサがマルチコアを有してもよい。別の1以上の実施形態では、MCH882はプロセッサ800に物理的にオンダイに集積されていてよく、プロセッサを直接メモリ886に、集積されたMCHを介して連結することができる。また別の1以上の実施形態では、他のコンポーネントをプロセッサにオンダイに集積して、例えばシステムオンチップ(SoC)デザインを提供することができる。さらに別の1以上の実施形態では、コンピュータシステムが複数のプロセッサを有することができる。
【0077】
図9は、適切なコンピュータシステム901の第2の実施形態のブロック図である。第2の実施形態は、前段で説明した第1のコンピュータシステム例にいくらか類似している。説明を簡潔にするべく、以下では類似点を全て繰り返すのではなく、差異を中心に説明する。
【0078】
上述した第1の実施形態と同様に、コンピュータシステムは、プロセッサ900と、I/Oコントローラハブ(ICH)984を有するチップセット981とを含む。さらに第1の実施形態と同様に、コンピュータシステムは、チップセットに連結された第1のコンポーネントインターコネクト985、ICHに連結された第2のコンポーネントインターコネクト990、ICHに連結されたシリアル拡張ポート991、ICHに連結されたネットワークコントローラ992、およびICHに連結されたデータ格納装置989を含む。
【0079】
この第2の実施形態では、プロセッサ900はマルチコアプロセッサである。マルチコアプロセッサは、プロセッサコア994−1から994−Mを含み、ここでMは2以上の整数であってよい(例えば、2、4、7、あるいはこれより大きい整数)。各コアは、ここに開示する命令の少なくとも1つの実施形態を実行する機能を有する少なくとも1つの実行ユニットを含むことができる。図示されているように、コア−1はキャッシュ995(例えばL1キャッシュ)を含む。他のコア各々も同様に専用コアを含む。プロセッサコアは、単一の集積回路(IC)チップに実装されてよい。
【0080】
プロセッサはさらに少なくとも1つの共有キャッシュ996を含む。共有キャッシュは、プロセッサの1以上のコンポーネント(例えばコア)が利用するデータ(例えば命令)を格納することができる。例えば、共有キャッシュは、メモリ986にローカルにデータをキャッシュすることにより、プロセッサのコンポーネントからのアクセスをより迅速に行うことができる。1以上の実施形態では、共有キャッシュには1以上の中間レベルのキャッシュ(レベル2(L2)、レベル3(L3)、レベル4(L4))、あるいはその他のレベルのキャッシュ、最終のレベルのキャッシュ(LLC)、および/または、これらの組み合わせが含まれてよい。
【0081】
プロセッサコアおよび共有キャッシュはそれぞれ、バスその他のインターコネクト997と連結される。バスその他のインターコネクトは、コアおよび共有キャッシュを連結して通信を行う。
【0082】
プロセッサはさらにメモリコントローラハブ(MCH)982を含む。この実施形態に示すように、MCHはプロセッサ900に集積される。例えばMCHはプロセッサコアとオンダイであってよい。プロセッサはMCH経由でメモリ986に連結される。1以上の実施形態では、メモリはDRAMを含んでよいが、これは必須ではない。
【0083】
チップセットは入力/出力(I/O)ハブ993を含む。I/Oハブは、バス(例えばQPI(QuickPath Interconnect))その他のインターコネクト980を介してプロセッサに連結される。I/Oハブ993には、第1のコンポーネントインターコネクト985が連結される。
【0084】
これは適切なシステムの特定の一例にすぎない。ラップトップ、デスクトップ、ハンドヘルドPC、PDA,工学ワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、エンベデッドプロセッサ、DSP、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話機、ポータブルメディアプレーヤ、ハンドヘルドデバイス、および様々なその他の電子デバイスに関する、当技術分野で知られている他のシステム設計および構成の利用もまた適切である。概して、ここに開示されるプロセッサおよび/または実行ユニットを組み込むことのできる幅広い範囲のシステムまたは電子デバイスが概して適切である。
【0085】
上述に記載においては、説明をし易くする目的から、多くの特定の詳細を述べて実施形態の完全な理解を促すよう努めている。しかしながら当業者であれば、1以上の他の実施形態が、これら特定の詳細なしに実行可能であることを容易に理解する。ここに記載した特定の実施形態は、本発明の実施形態の範囲を限定する意図からではなく、例示する意図を有する。本発明の範囲は、上述した特定の例示からではなく、以下に示す請求項によってのみ決定されるべきものである。また、公知の回路、構造、デバイス、および処理に関してはブロック図の形式で示し、詳細には示さないことにより、記載の理解を曖昧にしないよう心がけている箇所もある。また適宜、参照番号または参照番号の末尾を図面にわたり繰り返すことで、オプションとして同様の特性を有する、対応または類似するエレメントであることを示している場合もある。
【0086】
処理のなかには、ハードウェアコンポーネントによる実行が可能なものもあり、機械実行可能な命令で具現化されるものもあり、処理を行う命令でプログラミングされた回路またはハードウェアとする、または少なくともそうするものがある。回路には、汎用または専用プロセッサ、論理回路が含まれてよいが、これら以外にも様々なものが含まれうる。処理はさらにオプションとしてハードウェアおよびソフトウェアの組み合わせによって実行されてもよい。実行ユニットおよび/またはプロセッサは、機械命令または機械命令から導出される1以上の制御信号に呼応して、命令が特定する結果オペランドを格納する専用のあるいは特別の回路を含むことができる。
【0087】
本明細書の随所で利用されている「一実施形態(one embodiment)(an embodiment)」あるいは「1以上の実施形態(one or more embodiments)」といった言い回しは、特定の特徴が実施形態の実行において含まれてよいことを示している。同様に、ある実施形態、図面、その説明では様々な特徴を一まとめに説明して、開示を簡素化することで様々な発明の側面の理解を促す工夫がなされている場合があることに留意されたい。しかしこの開示に関する手法が、実施形態が各請求項に明示されているもの以上の特徴を必要とすることを反映しているものとして捉えられるべきではない。そうではなくて、以下の請求項から分かるように、発明の各側面は、開示する1つ1つの実施形態の特徴全て未満のなかに存在する。従って詳細な記載に続く請求項は、この詳細な記載に、各請求項をそれ自体が発明の別個の実施形態であるように組み込まれるべきであることをここに明記しておく。
以下に本発明の実施形態の例を項目として示す。
[項目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に記載の方法。