2016-09-29 5 views
-2

私の大学院コンピュータアーキテクチャでは、教授はMIPSでのパイプラインについて話しましたが、x86命令セットの状況(これは私が覚えていないことがある)のために、x86プロセッサは、アセンブリ命令とパイプラインを処理します。実際のIntel x86プロセッサはどれくらいのオーバーヘッドをパイプライン化していましたか?

私はむしろトピックに関するドキュメントやヒントのためよりも、直接数値答えを捜しているわけではない:パイプライン化を可能にするためにx86命令を変換するために行われているものを、どうするか。このロジック作品など

感謝束。

+0

https://en.wikipedia.org/wiki/Micro-operationを参照してください。用語は、マイクロオペレーションまたはマイクロオペレーションです。また、Agner Fogの何かがうまくいくので、http://www.agner.org/optimize/ –

答えて

-1

MIPS命令セットは、パイプライン化を容易にするように設計されたRISC命令セットですが、x86命令セットは悪性腫瘍のように成長しました。パイプライン化されたx86実装は、通常、各x86命令をパイプライン化された1つ以上のRISCライクな操作に変換します。

3

http://realworldtech.com/にある多くのフォーラムスレッドは、MIPSのような単純なデコードISAと比べて、x86カウントのCPUがトランジスタの数/性能/消費電力の点でどれくらいの費用がかかるかを議論しています。

10%は野生の推測として投げられた数字です。そのコストの一部は固定されており、CPUをより強力にするにつれて拡張されません。例えばx86命令をMIPS命令を分離するのに似ている複雑なuopsのストリームにデコードするには、おそらく3つの余分なパイプラインステージが必要です。メモリ宛先を持つADDは、ロード、ADD、およびストアにデコードされる可能性があります。可変長x86命令のデコード処理は並列処理(現在の設計ではクロックあたり最大4個)に非常に負荷が掛かります。パイプラインのいくつかの部分でマイクロ・フュージョンを使用すると、それよりも複雑になります。

x86は単なる可変長ではなく、長さ(すなわち、次の命令の開始)を決定するためには、オプションの接頭語および他の様々な複雑さがあるため、多くのビットを見る必要がある。インテルとAMDの間のAgner Fog's blog post about the "instruction set war"では、x86オペコードのコーディングスペースの面倒な状態のコストについて説明しています。 (実際のコードでのボトルネックを見つけたり、パフォーマンスカウンタを理解することを目的とした、AMDとIntelの最新のx86デザインのパイプラインについては、彼のmicroarch pdfも参照してください。

x86命令のデコードに要するコストは、Intel's Sandybridge microarchitecture family uses a small/fast decoded-uop cacheと伝統的なL1 Iキャッシュほど高くなっています。大規模なループであっても、通常、uopキャッシュに収まり、電力を節約し、レガシーデコーダからの実行と比べてフロントエンドのスループットを向上させます。他のほとんどのISAは、デコードされた命令キャッシュからほとんど利益を得ることができないため、それらを使用しません。 (Intel以前は、Pentium 4でデコードされたuopトレースキャッシュ(L1 Iキャッシュなし、弱いデコーダあり)を試していましたが、SnBのuopキャッシュはではなく、トレースキャッシュとレガシーデコーダはまだまだ高速です。)

OTOH、一部のx86のレガシー手荷物(一部のFLAGSアップデートなど)は、残りのパイプラインとアウトオブオーダーのコアにコストを課します。最新のx86 CPUは、DEC/JNZのようなものでの偽の依存関係を避けるために、FLAGの別の部分の名前を別々に変更する必要があります。 (​​)。 Intelはこれをやっていないことを実験しました(Pentium4、別名netburstマイクロアーキテクチャファミリ)。彼らは、INC/DECを避けたコンパイラで全員に自分のコードを再コンパイルするように指示し、add eax, 1(すべてのフラグを変更する)を使用すると考えました。 (This optimization advice stuck around for ages in their official optimization manual, long after P4 was obsolete, and many people think it's still relevant。)


一部の人々は、x86のの強いメモリー注文セマンティクスは、パイプラインCPUを活用できる並列処理を減らす「のx86税」の一部とみなされるべきであると主張しているが、他(例えば、Linus Torvalds)は、ハードウェアを使用することで、マルチスレッドコードのどこにでもバリア命令が必要ないことを意味すると主張します。そして、バリア命令を持つことは、ハードウェアがメモリの順序付けを十分に詳細に追跡することを必要とするだけでなく、安価である(記憶バッファの完全なフラッシュではない)。

+1

を参照してください。MIPS命令セットに独自の手荷物があります。例えば、分岐遅延スロットは、古典的な5状態パイプラインに結びついており、現代的な設計では意味をなさない。 –

+0

@RossRidge:そうです、良い点。 ISAにマイクロアーキテクチャの詳細を公開することは、物事が変わると常に負担になります。例えばVLIWアーキテクチャーは、再コンパイルなしにはそれほど広くは得られません。私はIA-64を実際に学んだことはありませんでしたが、明らかに多くのことを明らかにしています。この議論が現れたとき、それは通常ARMに関するものであり、ARM CPUの設計と製造が改善されれば最終的に世界をどのように引き継ぐのか、そしてIntelのプロセス優位性はx86税に対してもう支払うことができません。そしてもう一方の側は、x86税がフラットなコストだと主張している。私はこの質問に基づいてMIPSを置き換えました。 –

関連する問題