回答:
一般に、これらの各操作は、引数がパイプラインのさまざまなステージのレジスターにある場合にも、実行に1クロックサイクルかかります。
レイテンシとはどういう意味ですか?操作がALUで費やすサイクル数は?
この表は役立つかもしれません:http : //www.agner.org/optimize/instruction_tables.pdf
最新のプロセッサーはスーパースカラーであり、順序が狂って実行される可能性があるため、1サイクルを超える合計命令数が1を超えることがよくあります。マクロコマンドの引数が最も重要ですが、除算はXORよりも時間がかかるため、操作も重要です(<1サイクル遅延)。
多くのx86命令は、複雑な場合(REPコマンドやより悪いMWAITなど)、いくつかのステージを完了するために複数のサイクルを必要とする場合があります。
div
およびidiv
)はさらに悪いです。それはマイクロコード化されており、レイテンシはまたはよりはるかに高く、どのCPUでも完全にパイプライン化されていません。これらはすべて、Agner Fogの指示表から直接得られたものであるため、リンクさせておくとよいでしょう。add
shr
アセンブリコードの効率を計算することは、最近のOut of Order Execution Super Scalarパイプラインを使用するための最良の方法ではありません。プロセッサーのタイプによって異なります。前後の手順によって異なります(コードを追加して、場合によってはより高速に実行することもできます!)。一部の操作(特に除算)は、より古い予測可能なチップであっても、実行時間の範囲が異なります。実際には、多くの反復のタイミングが唯一の方法です。
インテルcpuに関する情報は、インテルソフトウェア開発者向けマニュアルを参照してください。たとえば、レイテンシは整数の加算で1サイクル、整数の乗算で3サイクルです。
乗算についてはわかりませんが、加算には常に1サイクルかかると思います。