C でいくつかの非常に短い操作のマイクロ ベンチマーク コードを書いています。たとえば、渡された引数の数に応じて、空の関数を呼び出すのに必要なサイクル数を測定しています。
現在、各操作の前後にRDTSC命令を使用してタイミングを計り、CPUのサイクル数を取得しています。ただし、最初の RDTSC の前に発行された命令が、測定している実際の命令の速度を低下させる可能性があることを懸念しています。また、2 番目の RDTSC が発行される前に完全な操作が完了しないのではないかと心配しています。
新しい命令が発行される前に、実行中のすべての命令を強制的にコミットする x86 命令を知っている人はいますか? CPUIDがこれを行う可能性があると言われましたが、そう言っているドキュメントを見つけることができませんでした.