Metadata Table | |
---|---|
Manual Type | user |
Spec Revision | |
Spec Release Date | |
Git Revision | riscv-isa-release-1239329-2023-05-23-96-g1ee25e1 |
Git URL | https://github.com/riscv/riscv-isa-manual.git |
Source | src/zam-st-ext.adoc |
Conversion Date | 2023/11/12 |
License | CC-by-4.0 |
This chapter defines the "Zam" extension, which extends the "A" extension by standardizing support for misaligned atomic memory operations (AMOs). On platforms implementing "Zam", misaligned AMOs need only execute atomically with respect to other accesses (including non-atomic loads and stores) to the same address and of the same size. More precisely, execution environments implementing "Zam" are subject to the following axiom:
If \(r\) and \(w\) are paired misaligned load and store instructions from a hart \(h\) with the same address and of the same size, then there can be no store instruction \(s\) from a hart other than \(h\) with the same address and of the same size as \(r\) and \(w\) such that a store operation generated by \(s\) lies in between memory operations generated by \(r\) and \(w\) in the global memory order. Furthermore, there can be no load instruction \(l\) from a hart other than \(h\) with the same address and of the same size as \(r\) and \(w\) such that a load operation generated by \(l\) lies between two memory operations generated by \(r\) or by \(w\) in the global memory order.
This restricted form of atomicity is intended to balance the needs of applications which require support for misaligned atomics and the ability of the implementation to actually provide the necessary degree of atomicity.
Aligned instructions under "Zam" continue to behave as they normally do under RVWMO.
The intention of "Zam" is that it can be implemented in one of two ways:
|