Relaxed Memory Model Zoo

Partial Store Order (PSO)
← Back to the map

Partial Store Order PSO

1992 · SPARC International · hardware

Extends TSO by additionally allowing store-store reordering to different addresses. A thread's writes to distinct locations may become visible to other threads out of program order.

Cat model

Specified in cat cat file identified

An instance of the Herding cats generic framework (ppo additionally drops W->W); run here as litmus/models/abstract-pso.cat. Alglave et al. 2014

Properties

Property vector author-extrapolated — set only where the model’s definition pins the cell down (unknown cells are omitted); cells citing a specific source are marked.

Reordering sound
  • yes Store→Load
  • yes Store→Store
  • no Load→Load
  • no Load→Store
Reasoning guarantees
  • yes Coherence
  • yes No undefined behaviour
  • yes In-order execution
  • yes No out-of-thin-air
Atomicity guarantees
  • yes Multicopy atomic

Ordering relationships

Strictly weaker than
Strictly stronger than
  • Relaxed Memory Order (RMO) — RMO allows all four reordering types including load-load and load-store.
  • IBM POWER Memory Model — Empirically PSO is a subset of POWER: every PSO-allowed behaviour is also POWER-allowed, while POWER additionally allows load-load reordering (e.g. MP+sync+po) and non-MCA behaviour that PSO forbids. No PSO-allowed/POWER-forbidden witness exists on the standard litmus families, so the earlier 'incomparable' classification was too generous. See litmus/strictly-weaker/PSO-vs-POWER.
Equivalent to

References