是时候运行for循环的指令了

时间:2015-08-10 12:30:48

标签: c linux

我有兴趣计算用于实现基于TDM(时分复用方案)的方案的125μs的持续时间。但是,使用Linux操作系统,我无法以+ -5us的精度获得此持续时间。我正在使用在ubuntu和intel硬件上运行的DPDK。如果我使用函数clock_gettime(CLOCK_REALTIME)从计算机中抽出时间,它会增加调用内核来获取时间的时间。这给我一个不准确的持续时间。

因此,我专门用一个cpu核心来计算时间,而不需要从内核那里得到时间。为此,我运行for循环以获得最大指令(8000000),并找到需要执行125μs持续时间的数字指令(即(125*8000000)/timespent)。

然而,问题在于它也提供了不准确的结果(总是有不同的结果,即差异1000条指令)。

  • 有人知道为什么我得到不准确的结果,即使我为此专门设计了CPU吗?
  • 您是否知道在不调用内核的情况下计算持续时间(非常短,可能等于125 us)的方法?谢谢!

1 个答案:

答案 0 :(得分:1)

由于您使用的是多任务操作系统,因此结果不准确。你不能在现代计算机上这样做。您只能在嵌入式微控制器上执行此操作,您可以控制100%的CPU时间。即使您有专用​​的CPU,操作系统也需要管理您的进程。鼠标和键盘也需要时间。你必须在'Bare Metal'上运行这个过程。