体系结构学习16-Memory Consistency

1、Memory Consistency来源

保证每一个处理器接触一致的数据
Global Ordering of Access to all location
而cache Consistency 只是local ordering of access to each cache block
Memory Ordering 情况:

  • Single Processor:in-order(与程序代码顺序一致) , Out-of-Order
  • MIMD Processor
  • I/O Devices

Software:程序员希望执行顺序和代码顺序一样;保证互锁互斥
Hardware:需要支持互锁互斥

2、Sequential Consistency

Memory Consistency在原始意义上实现过于困难,选择实现Sequential Consistency。

  • 单个线程执行顺序保持一致
    R-W,R-R,W-R,W-W

但是要完全保证Sequential Consistency代价过高(不支持大多数性能优化,比如load bypass),于是考虑放宽要求:

  • Total Store Ordering:R-W,R-R,W-W
  • Partial Store Ordering:R-W,R-R
  • Weak Ordering or Release Consistency:
    加fences,即执行完成与没有执行的边界
    acquire and release 操作,保证操作互斥

3、Locks or Semaphores

先检查后执行,如果冲突则等待
PV操作
software实现十分复杂,故而考虑Hardware实现:
Test&Set , Fetch&Add, Swap

4、NonBlocking Synchronization

先执行后检查,若冲突(与之前flag不一致,确保每次只有一个执行成功)则舍弃执行结果:
Compare & Swap,Load-Link,Store-conditional

5、Mutual Exclusion Using Load/Store

  • 要求Sequential Consistency,不然load、store被改变顺序就没有意义了
  • 实现要求很高,需要精确设计
    实现方式
  • 先申请权限,但不放开权限(会出现死锁)
  • 先申请权限,如果发现同时申请,则放开(会出现活锁,或者执行较慢的线程出现starvation)
  • Dekker’s Protocol:轮流优先权,优先级高的不放开权限,一直等待优先级低的放开。优先权使用后降低其优先级从而避免starvation。

你可能感兴趣的:(体系结构)