多核并行计算中锁机制的影响研究
2021-01-30徐永新
电子技术与软件工程 2020年22期
关键词:机制
徐永新
(华为技术有限公司 江苏省南京市 210012)
随着摩尔定律的逐渐失效,CPU 往多核、众核方向发展,单一CPU 上集成的核数越来越多。随着核数增加,锁对性能的影响也越来越显著。根据阿姆达尔定律,多核并行计算的效率受限于流程中的串行处理部分,串行部分越大,则加速比提升的越慢。因此,学术界及工业界都在千方百计减少多核多线程场景下串行执行流程的处理时间,其中锁是一种比较典型的串行执行场景。锁的存在将导致多线程的执行性能降低。
在某些对事件响应有较高实时性要求的场合,锁的存在也会影响线程对特定事件的响应时间。某线程在尝试获取锁的过程中,存在时间不确定性,可能需要较短或者较长时间才能获取到锁,这种执行时间的不确定,将导致线程对具体业务时延的不确定。
1 锁的种类
在多核并行计算场景中,处于不同核上的多线程尝试访问一个公共资源的时候,往往需要加锁操作。根据业务线程访问共享资源的不同特征,需要合理选择不同的锁机制来配合完成业务的特定功能。
1.1 自旋锁
自旋锁是一种获取不到资源时在原地忙等,以期获取到共享资源的锁机制。
一个线程想要获取被自旋锁保护的共享资源的时候,必须先得到锁,使用完共享资源的时候,必须释放锁。在获取锁的时候,如果该共享资源没有被任何其他线程占有,则直接获取该锁;反之,如果该资源已被其他线程占有,则申请者会在原地自旋等待,即忙等,不断循环检测该锁是否可以被获取。……
登录APP查看全文
