Open baiwfg2 opened 2 years ago
sidebar: 大多数时候,我们只需reason about对两个不同地址的操作的reorder
所有的处理器默认都是 non-deterministic,所有的架构都是允许线程interleaving执行的,我们有时看到的determinism 是因为软件用了同步语义
memory model 指出了在共享内存场景下多线程程序执行时所能允许的行为规范。
我们认为应该将consistency实现与coherence实现解耦
fig 3.1 画出了sequentially consistent execution fig 3.2 画出了可能的执行,很好
2 coherence basics
fig 2.1 一个基础系统模型 fig 2.2 incoherence的例子
作者对coherence有自己的定义,将一个给定内存地址的lifetime分成epochs, 其基础是SWMR invariant
6-9 章详细谈invalidate protocols
coherence 的粒度是cache block
区分consistency 和coherence,前者在SC时要求系统看上去对
所有内存地址
的执行顺序与程序顺序在total order上保持一致,而后者是强调所有线程对单个内存
地址处的读写顺序与每个线程的程序顺序一致Hennessy, Patterson的coherence定义有3个invariants,作者认为 sufficiently separated time 这种说法是模糊的
严格来讲,一个系统如果服从某种memory consistency model,即使它是 incoherent,但它仍可是correct (这种情况不太好想象),但实际上这么多consistency model实现依赖于常见的coherence属性