SMT同步

来源:互联网 发布:匡恩网络重组上市 编辑:程序博客网 时间:2024/04/30 13:58

1.       SMP机器主要支持三种同步操作:互斥、点到点时间、全局事件

2.       在基于总线的高速缓存一致的对称多处理机系统中,一般采用硬件原语和软件算法相结合来实现同步。

3.       互斥操作

(1)     简单的锁算法

在处理器指令集中支持某种原子执行的读-修改-写指令,如交换指令。

Test&Set指令:内存位置的值被读到指定的寄存器中,并且常数1被存入该内存位置。

Lock: t&s register , location

       Bnz lock    //寄存器的值是否等于0,如果不是0再试

     Ret

Unlock: st location #0

       Ret

MIPS下的LL SC指令

(2)     改进的锁算法

Test&Set带来的问题,n个核等待锁,都执行t&s指令,这样会有读操作和写操作,而写操作意味着要产生一个Invalidate事务,在下次读时又产生一个MISS事务,这样就意味着,即使某个处理器已经获得锁,其他处理器在等待该锁时也会产生大量的通信。

一:后退Test&Set

其关键就是要降低T&S锁的频率,具体就是在忙等待循环时,插入一个延迟时间。延迟时间随“指数”变化。

            二:Test-and-Test&Set

                      我们可以发现写是很多余的,我们可以先load读该变量,然后看看其是否为0,若不为0则继续读,否则才调用T&S。原因在于load时可以在cache中读到,命中率很高,可以有效减少总线事务。

(3)     先进的锁算法

一:票锁,每一个进程一个票号,并且忙等待一个全局的Now-serving号,只有当其与它持有的票号相同时,才能得到锁。采用FIFO方式服务。

二:基于数组的锁,释放方法是将一个表示“锁空闲”的值写入到数组中的下一个位置中,这些location最好不要放在一起,否则以至于在一个cache line,换出时都会换出。

(4)     全硬件实现

4.       点到点事件同步

使用信号量

5.       全局事件同步

一:软件算法

(1)     集中式路障

锁、一个计数器、一个标识。

 

(2)     具有感觉反转的集中式路障,主要是为了解决集中式路障连续应用带来的问题。

原创粉丝点击