nop忙碌的等待?

时间:2016-04-01 17:44:47

标签: linux timer nop

我想实现非忙等待机制,以便在linux内核模块中创建一个纳秒的延迟。

现在我正在看函数

ndelay(ns);

但是https://www.kernel.org/doc/Documentation/timers/timers-howto.txt

这里提到ndelay函数是一个繁忙的等待机制。

但我想要非忙等待延迟。所以,我在Linux内核模块中考虑nop,如下所示:

asm volatile ("nop");

我研究过nop需要一个周期才能执行。所以,我将实现嵌套的nop来获得所需的延迟。我的问题是 -

通过使用nop,我将以非繁忙的等待方式实现纳秒延迟吗?任何人都可以在此确认吗?此外,一些期刊和资源的参考将有所帮助。

1 个答案:

答案 0 :(得分:1)

就像它的名字所暗示的那样,“NOP”是一种不会修改机器状态的操作,但这并不意味着处理器在执行NOP时处于空闲状态或“非忙”状态。与任何其他指令一样,NOP在执行时仍然声称处理器的某些资源。

显然,现代超级流水线处理器很复杂,并且通常会同时执行许多操作,因此很可能NOP使用的资源少于分支,字符串比较或浮点运算等更复杂的操作,但它并不安全。假设NOP不像你说的那样非忙碌。