2016-04-25 6 views
0

Agner Fog in his microarch.pdf saysのx86復号

2つのμopを生成 命令のみ行くことができるが 1つの融合のμopを生成する命令三個のデコーダのいずれにも行くことができるので、復号化は、より効率的になりますデコーダD0に供給する。

私は、デコーダがx86マシンコードを入力として(アセンブラ出力のようにmov eax, eaxから)取り出し、出力としてマイクロopsを生成することを知っています。

デコードの前に、特定の命令をデコードするデコーダはどのように決定されますか?おそらくプリデコーダ?

答えて

2

Agner's microarch PDFは解読を説明し、マルチuop命令で何が起こるかを説明しています。

マルチuop命令がデコードされるブロックの最初のinsnでない場合、デコードはそのinsnで終了します。次のサイクルでは、マルチプル・イン・モードでデコードが開始されるため、マルチ・ウッップ命令を扱うことができるコンプレッサーがヒットします。

このため、3-1-3-1の繰り返しパターンは、3-3-1-1の繰り返しパターンよりも優れています。

プリデコーダは命令の長さ/境界のみをマークします。彼らは、どのインシュが複数のuopにデコードするのかはまだ分かっていません。実際には命令をデコードする必要があるため、命令ストリームをシャッフルして複雑な命令を複雑なデコーダに送る方法はありません。

これは、デコーダでボトルネックになっている場合、命令の順序が重要な理由です。 uopキャッシュを持つCPUの場合、デコードのパフォーマンスは通常は重要ではありません。そうであれば、コードサイズの問題があります。コードが頻繁に実行されることは稀ですが、uopキャッシュではパフォーマンスが低下することは稀です。