diff options
author | Josh Scheid <jscheid@ventanamicro.com> | 2019-08-06 08:39:30 -0700 |
---|---|---|
committer | Andrew Waterman <andrew@sifive.com> | 2019-10-02 17:25:50 +0200 |
commit | 822b12bc2484909bac6bfd943b265210757ce381 (patch) | |
tree | 20801d004c5364eb0c0f279b7e7a63cdd64c1c11 | |
parent | 085e82492c61675254b4553ea084c570e8f2b60c (diff) | |
download | riscv-isa-manual-822b12bc2484909bac6bfd943b265210757ce381.zip riscv-isa-manual-822b12bc2484909bac6bfd943b265210757ce381.tar.gz riscv-isa-manual-822b12bc2484909bac6bfd943b265210757ce381.tar.bz2 |
Add a description of the reservability PMA.
-rw-r--r-- | src/machine.tex | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/src/machine.tex b/src/machine.tex index baacef9..176f931 100644 --- a/src/machine.tex +++ b/src/machine.tex @@ -2699,16 +2699,17 @@ memory supports page-table walks. Atomicity PMAs describes which atomic instructions are supported in this address region. -Main memory and I/O regions may only support a subset or none of the -processor-supported atomic operations. +Support for atomic instructions is divided into two +categories: {\em LR/SC} and {\em AMOs}. \begin{commentary} Some platforms might mandate that all of cacheable main memory support all atomic operations required by the attached processors. \end{commentary} -Support for atomic instructions is divided into two categories: {\em - LR/SC} and {\em AMOs}. Within AMOs, there are four levels of +\subsubsection{AMO PMA} + + Within AMOs, there are four levels of support: {\em AMONone}, {\em AMOSwap}, {\em AMOLogical}, and {\em AMOArithmetic}. AMONone indicates that no AMO operations are supported. AMOSwap indicates that only {\tt amoswap} instructions are @@ -2718,6 +2719,8 @@ instructions plus all the logical AMOs ({\tt amoand}, {\tt amoor}, AMOs are supported. For each level of support, naturally aligned AMOs of a given width are supported if the underlying memory region supports reads and writes of that width. +Main memory and I/O regions may only support a subset or none of the +processor-supported atomic operations. \begin{table*}[h!] \begin{center} @@ -2738,14 +2741,34 @@ supports reads and writes of that width. \begin{commentary} We recommend providing at least AMOLogical support for I/O regions +where possible. +\end{commentary} + +\subsubsection{Reservability PMA} + +For {\em LR/SC}, there are three levels of support indicating combinations of +the reservability and eventuality properties: {\em RsrvNone}, +{\em RsrvNonEventual}, and {\em RsrvEventual}. +RsrvNone indicates that no LR/SC operations are supported (the location is +non-reservable). RsrvNonEventual indicates that the operations are supported +(the location is reservable), but without the eventual success guarantee +described in the unprivileged ISA specification. RsrvEventual indicates that +the operations are supported and provide the eventual success guarantee. + +\begin{commentary} +We recommend providing RsrvEventual support for main memory regions where possible. Most I/O regions will not support LR/SC accesses, as -these are most conveniently built on top of a cache-coherence scheme. +these are most conveniently built on top of a cache-coherence scheme, but some +may support RsrvNonEventual or RsrvEventual. +\end{commentary} + +\begin{commentary} +When LR/SC is used for memory locations marked RsrvNonEventual, software should +provide alternative fall-back mechanisms used when lack of progress is +detected. \end{commentary} -Memory regions that support LR/SC will define the conditions under which LR/SC -sequences must succeed or must fail. Main memory must guarantee the eventual -success of any LR/SC sequence that meets the requirements described in the -user ISA specification. +\subsubsection{Alignment} Memory regions that support aligned LR/SC or aligned AMOs might also support misaligned LR/SC or misaligned AMOs for some addresses and access widths. If, |