Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • Architecture Metrics Reference
  • Workload Taxonomy for Architects
  • Architecture Glossary
  • Computer Architecture Cheatsheet
  • Pipeline Fundamentals14
  • Memory Hierarchy15
  • NoC and Interconnect Architecture6
  • Coherency and Memory Ordering9
    • Cache Coherence for the Architect
    • Memory Ordering Models
      • Models: SC, TSO, ARMv8, RVWMO
      • Where Reordering Comes From
      • Fences, Acquire/Release and Dependencies
      • Litmus Tests and Lock-Free Sync
  • Performance Analysis9
  • Accelerator Architectures6
  • SoC Architecture Tradeoffs9
  • Architecture Interview Prep14
Loading lesson

‹Memory Ordering Models
  1. Topics
  2. Computer Architecture
  3. Coherency and Memory Ordering
  4. Memory Ordering Models
  5. Models: SC, TSO, ARMv8, RVWMO

Computer Architecture · All levels

Models: SC, TSO, ARMv8, RVWMO

Sequential consistency, TSO, ARMv8 and RVWMO guarantees side by side.

On this page

    Coherence is not consistency

    Coherence gives a total order of accesses to one location. Every core agrees which store to that address came last.

    Consistency constrains visibility across locations. It decides which orders of accesses to different addresses a core may observe.

    Concept

    Governs

    Example

    Coherence

    One location at a time

    Two stores to x reach every core in the same order.

    Consistency

    Many locations together

    Whether a new flag can be seen before new data.

    Four models side by side

    Pairs read in program order. StLd asks whether a store followed by a load to a different address can appear reordered.

    Pair

    SC

    x86-TSO

    ARMv8

    RVWMO

    StLd

    ordered

    can reorder

    can reorder

    can reorder

    LdLd

    ordered

    ordered

    can reorder

    can reorder

    StSt

    ordered

    ordered

    can reorder

    can reorder

    LdSt

    ordered

    ordered

    can reorder

    can reorder

    Sequential consistency behaves like some interleaving of program orders. Nothing observable reorders.

    x86-TSO adds one FIFO store buffer with forwarding, so only StLd reorders. ARMv8 and RVWMO let any pair reorder, except same-address order and true dependencies.

    Pattern

    Weak outcome

    SC

    x86-TSO

    ARMv8 / RVWMO

    SB

    r1 = 0, r2 = 0

    never

    possible

    possible

    MP

    r1 = 1, r2 = 0

    never

    never

    possible

    LB

    r1 = 1, r2 = 1

    never

    never

    possible

    WRC

    reader sees y = 1 yet x = 0

    never

    never

    never

    IRIW

    two readers disagree on store order

    never

    never

    never

    Cumulativity decides WRC and IRIW

    A model is multi-copy atomic when a store becomes visible to all cores at once. All four models here have that property, so WRC and IRIW stay forbidden under each.

    Those two patterns separated historic non-atomic designs such as old Power and ARMv7. They remain the test for cumulativity when a new implementation claims MCA behavior.

    Common pitfall

    Coherent caches do not imply sequential consistency. Coherence orders one location, while SC orders all of them together.

    Interview

    Likely probe: why TSO keeps LdLd ordered but allows StLd. Loads still retire in order, while a FIFO buffer lets a later load pass an earlier waiting store.

    • Name the one reorder TSO adds: StLd through the store buffer.

    • Name what closes each pattern on TSO: MFENCE for SB, nothing extra for LB or MP.

    Check yourself x86 code shows SB with r1 = 0, r2 = 0. Which pair reordered, and which fence removes it?

    StLd reordered through the store buffer on both cores. An MFENCE between each store and its later load removes it.

    Check yourself MP flag arrival with stale data appears on ARMv8. Which pairs explain it, and what removes it?

    StSt on the writer side or LdLd on the reader side. A release store with an acquire load, or a full barrier on each side, removes it.

    Related topics

    • Cache coherence for the architect

    Previous

    45 / 86

    Next: Where Reordering Comes From

    Up next

    Up nextWhere Reordering Comes From

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Fences, Acquire/Release and Dependencies
    • Litmus Tests and Lock-Free Sync