Skip to content

Latest commit

 

History

History
117 lines (96 loc) · 3 KB

zaamo-zalrsc.adoc

File metadata and controls

117 lines (96 loc) · 3 KB

Zaamo and Zalrsc Extensions

Preamble

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.

Contributors

This RISC-V specification has been contributed to directly or indirectly by: Ved Shanbhogue

1. Atomic Memory Operations Extension (Zaamo)

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 LR/SC instructions provided by the A extension.

2. Load-Reserved/Store-conditional Extension (Zalrsc)

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.

Bibliography

bibliography::[]