Warning
|
This document is in the Ratified state
No changes are allowed. Any desired or needed changes can be the subject of a follow-on new extension. Ratified extensions are never revised. |
This specification is licensed under the Creative Commons Attribution 4.0 International License (CC-BY 4.0). The full license text is available at creativecommons.org/licenses/by/4.0/.
Copyright 2024 by RISC-V International.
The Zaamo extension comprises the atomic memory operation (AMO) subset of the A extension cite:[unpriv].
For RV32, the Zaamo extension includes the following instructions:
-
AMOSWAP.W
-
AMOADD.W
-
AMOAND.W
-
AMOOR.W
-
AMOXOR.W
-
AMOMAX[U].W
-
AMOMIN[U].W
For RV64, the Zaamo extension includes the following instructions:
-
AMOSWAP.W/D
-
AMOADD.W/D
-
AMOAND.W/D
-
AMOOR.W/D
-
AMOXOR.W/D
-
AMOMAX[U].W/D
-
AMOMIN[U].W/D
The Zacas extension cite:[zacas] depends on the Zaamo extension.
Note
|
The Zaamo extension enables microcontroller class implementations to utilize
atomic primitives from the AMO subset of the A extension. Typically such
implementations do not have caches and thus may not be able to naturally support
the |
The Zalrsc extension comprises the Load-Reserved/Store-Conditional instruction subset of the A extension.
For RV32, the Zalrsc extension includes the LR.W
and SC.W
instructions.
For RV64, the Zalrsc extension includes the LR.W/D
and SC.W/D
instructions.
Note
|
The fetch-and-op style atomic primitives provided by the A extension support better scaling for highly parallel systems. Simpler implementations that do not have such scaling requirements may implement the Zalrsc subset of the A extension to support atomic primitives. |