x86およびx64プロセッサでのCPU命令のレイテンシ


14

アセンブリコードの効率を計算するのに役立つテーブルまたは類似のものを探しています。

私はビットシフトに1 CPUクロックかかることを知っていますが、私は実際にどれだけの加算(減算も同じである必要があります)、乗算、および除算している値がわかっている場合はおそらく除算時間を計算する方法を探しています。

整数値に関する情報が本当に必要ですが、フロート実行時間も歓迎します。


回答:


10

一般に、これらの各操作は、引数がパイプラインのさまざまなステージのレジスターにある場合にも、実行に1クロックサイクルかかります。

レイテンシとはどういう意味ですか?操作がALUで費やすサイクル数は?

この表は役立つかもしれません:http : //www.agner.org/optimize/instruction_tables.pdf

最新のプロセッサーはスーパースカラーであり、順序が狂って実行される可能性があるため、1サイクルを超える合計命令数が1を超えることがよくあります。マクロコマンドの引数が最も重要ですが、除算はXORよりも時間がかかるため、操作も重要です(<1サイクル遅延)。

多くのx86命令は、複雑な場合(REPコマンドやより悪いMWAITなど)、いくつかのステージを完了するために複数のサイクルを必要とする場合があります。


3
整数の乗算は、最近のすべてのx86 CPUでは少なくとも3cのレイテンシです(一部の古いCPUではそれ以上)。多くのCPUでは完全にパイプライン化されているため、スループットは1クロックあたり1ですが、3つの独立した乗算を実行している場合にのみ達成できます。(HaswellでのFP乗算は5cのレイテンシ、0.5cのスループットなので、スループットを飽和させるには10が必要です)。除算(divおよびidiv)はさらに悪いです。それはマイクロコード化されており、レイテンシはまたはよりはるかに高く、どのCPUでも完全にパイプライン化されていません。これらはすべて、Agner Fogの指示表から直接得られたものであるため、リンクさせておくとよいでしょう。addshr
Peter Cordes


7

アセンブリコードの効率を計算することは、最近のOut of Order Execution Super Scalarパイプラインを使用するための最良の方法ではありません。プロセッサーのタイプによって異なります。前後の手順によって異なります(コードを追加して、場合によってはより高速に実行することもできます!)。一部の操作(特に除算)は、より古い予測可能なチップであっても、実行時間の範囲が異なります。実際には、多くの反復のタイミングが唯一の方法です。


それはわかっていますが、実際のプロジェクトではなく、ある種の楽しいプログラミングプロジェクトで必要です。
ST3

あなたがそれを本当または楽しみのために必要とするかどうかは、このプロセッサーラインの答えを変えません。代わりに、プロペラチップなど、より確定的なプロセッサへの切り替えを検討しましたか?
Brian Knoblauch、2013

3
スカラーを使用した場合でも、インオーダーの実装ブランチの予測ミスとキャッシュミスにより、実行時間が変動する可能性があります。
ポールA.クレイトン

純粋にCPUに依存するもの(キャッシュミス、分岐の予測ミスがない)の場合、CPUの動作は十分に詳細に理解されているため、静的分析では、特定のCPU(例:Intel Haswell)でループが繰り返す反復ごとのサイクル数をほぼ正確に予測できます。たとえば、コンパイラで生成されたasmを見て、SOの回答を参照してください。分岐のバージョンの方が、OPのSandybridge CPUのCMOVバージョンよりもほぼ1.5倍速く実行されましたが、Skylakeの方がはるかに近くなっています。
Peter Cordes 2017

パフォーマンス上の理由からasmを手動で作成している場合、IntelおよびAMD CPUでレイテンシとスループットのボトルネックを探すことは実際に役立ちます。それは難しいことですが、AMDにとって最適なものがIntelにとって最適ではない場合もあります。
Peter Cordes 2017

4

インテルcpuに関する情報は、インテルソフトウェア開発者向けマニュアルを参照してください。たとえば、レイテンシは整数の加算で1サイクル、整数の乗算で3サイクルです。

乗算についてはわかりませんが、加算には常に1サイクルかかると思います。


「フリー」(パイプラインが正しく整列している場合に並行して)であるか、キャッシュミスにより時間がかかる場合を除いて、1サイクル。:-)
ブライアンノブラウチ2013

2
現在(2018年)、この情報は答えにリンクされたページの「インテル®64およびIA-32アーキテクチャー最適化リファレンスマニュアル」文書248966の「命令のレイテンシとスループット」も利用できるという名前の付録Cで提供されています
stefanct
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.