什么是硬件信号量?

时间:2011-03-14 14:57:24

标签: terminology ipc semaphore interprocess

如果它是硬件信号量,它如何从软件中使用?是否存在实际在HW中实现的软件API?

我问我正在实现与某些硬件接口的固件。硬件和固件之间会有很多信息交换。我讨论硬件信号量,只是想了解更多信息。关于此的一些文献会有所帮助

3 个答案:

答案 0 :(得分:4)

你大多是正确的。有一个SW API,需要一些特殊的硬件才能正常工作。软件中信号量的实现,其中有少数,都是基于某种保证是原子的硬件指令。

实现信号量需要HW中的原子性。通常硬件指令不是原子的。

为了详细说明,您需要通过读取和写入一个超过1个处理器可见的共享内存来实现信号量。读取和写入共享内存通常不是原子操作:例如,如果执行读操作然后执行写操作,则可能会有其他指令在读取和写入之间进行调度。

答案 1 :(得分:1)

硬件需要确保总线在操作的第二部分(即写入)之前与访问资源的其他主设备锁定。通常这是在硬件仲裁阶段完成的。

答案 2 :(得分:0)

在具有至少两个处理器的计算机系统中,每个处理器具有相关的存储器,处理器通过总线通过接口单元彼此耦合,公开了用于调节对共享资源的访问的硬件信号量。每个信号量都是一位宽,可以写入以获得所需的状态。读取信号量时,如果内容为1,则返回一个信号量。如果内容为零,则返回零,但信号量自动重置为一。