我正在为 C 中的一些非常短的操作编写一些微基准测试代码。例如,我正在测量的一件事是根据传递的参数数量调用一个空函数需要多少个周期。
目前,我在每次操作之前和之后使用 RDTSC 指令进行计时,以获取 CPU 的循环计数。但是,我担心在第一个 RDTSC 之前发出的指令可能会减慢我正在测量的实际指令。我还担心在第二个 RDTSC 发布之前,完整的操作可能还没有完成。
有谁知道在发出任何新指令之前强制所有正在进行的指令提交的 x86 指令?我被告知 CPUID 可能会这样做,但我一直无法找到任何这样说的文档。