作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在尝试在我们的硬件的设备驱动程序中包含一个基准。基准测试例程如下所示
for(int i = 0; i < lots; i++){
tscStart = __rdtsc();
WRITE_REGISTER_ULONG(ourRegister, ourValue)
tscEnd = __rdtsc();
duration = tscEnd - tscStart;
// Store duration for later evaluation
}
现在,我们似乎在 CPU 对调用重新排序时遇到了问题,因此在大约 50% 的情况下,持续时间
太短(我们连接了示波器,所以我们当然在这里)。
其他事实(我不知道这些是否相关,这是我们第一次使用此类驱动程序):
__rdtscp
具有相同的行为(在支持它的计算机上)_mm_mfence
和/或 __cpuid
包围每一行,以强制命令序列化dummy = READ_REGISTER_ULONG(ourRegister)
的等效基准测试正在按预期工作。有没有办法让机器在第二次写入之前真正等待写入返回?
最佳答案
正如 Hans Passant 和 Damon 在评论中提到的,尝试使用 __cpuid 来序列化 __rdtsc 调用应该可行,但由于处理器不会等待PCIe 传输完成,我的计时数据无论如何都关闭了。
关于c - 在基准测试中强制串行执行 __rdtsc(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20198091/
我们正在尝试在我们的硬件的设备驱动程序中包含一个基准。基准测试例程如下所示 for(int i = 0; i < lots; i++){ tscStart = __rdtsc(); W
我想在我的代码中插入一些时间测量。在 x64 上我使用 __rdtscp。 mac m1/m2 有类似的东西吗?具体来说,不是系统调用和高分辨率。 最佳答案 只需使用clock_gettime(CLO
我是一名优秀的程序员,十分优秀!