2

確かに、ちょっとばかげた質問があります。基本的に、一連のダミー、つまり NOP 命令を効率的に実行するために Intel プロセッサによって提供される特別なメカニズムがあるかどうか疑問に思っています。たとえば、NOPS を識別して破棄し、代わりに有用な命令をフェッチしようとする、ある種のプリフェッチ メカニズムがあると想像できます。または、これらの NOPS は通常の命令として実行ユニットにディスパッチされます。つまり、各サイクルで大まかに 5 つの nop を処理できます (5 つの実行ユニットがあると仮定して)

ありがとう、ラインハルト

4

3 に答える 3

2

それらを破棄するのはかなり悪い考えです。それらはしばしばビジー待機に使用されます。を破棄NOPすると、待機ループが必要以上にタイトになり、かなりの通信オーバーヘッドが発生する可能性があります。

s が非効率的であると感じた場合は、エネルギーを節約するNOP方法を試すことができます。HLTまたは、CPU をスリープ状態にすることもできます。ただし、これらはかなりの時間「何もしない」場合にのみ意味があり、通常は監視者権限が必要です。

于 2010-01-23T20:40:44.270 に答える
1

いいえ。それらは通常の命令としてデコードおよび実行されます。シングル バイト NOP 0x90 (実際にはxchg eax, eax) の EAX レジスタに導入される誤った依存関係を削除するためのハードウェア サポートがありますが、それだけです。

参照: Intel(R) 64 and IA-32 Architectures Optimization Reference Manual - セクション 3.5.1.8、「Using NOPs」。

于 2010-01-23T19:31:58.267 に答える
0

x86 アーキテクチャでは、さまざまな長さの no-op エンコーディングがあるため、no-op のシーケンスを最適化する必要はほとんどありません。多くの 1 バイト no-op の代わりに、単一のマルチバイト no-op を使用できます。デコーダーの作業はいくらか増えますが、実際の実行ユニットは実行する命令を 1 つしか認識しません。

于 2010-01-23T21:11:38.183 に答える