5.1. RVI20 Profiles
The RVI20 profiles document the initial set of unprivileged instructions. These provide a generic target for software toolchains and represent the minimum level of compatibility with RISC-V ratified standards. The two profiles RVI20U32 and RVI20U64 correspond to the RV32I and RV64I base ISAs respectively.
| These are designed as unprivileged profiles as opposed to user-mode profiles. Code using this profile can run in any privilege mode, and so requested and fatal traps may be horizontal traps into an execution environment running in the same privilege mode. |
5.1.1. RVI20U32
RVI20U32 specifies the ISA features available to generic unprivileged execution environments.
5.1.1.1. RVI20U32 Mandatory Base
RV32I is the mandatory base ISA for RVI20U32, and is little-endian.
As per the unprivileged architecture specification, the ecall
instruction causes a requested trap to the execution environment.
Misaligned loads and stores might not be supported.
The fence.tso instruction is mandatory.
The fence.tso instruction was incorrectly described as
optional in the 2019 ratified specifications. However, fence.tso is
encoded within the standard fence encoding such that implementations
must treat it as a simple global fence if they do not natively support
TSO-ordering optimizations. As software can always assume without any
penalty that fence.tso is being exploited by a hardware
implementation, there is no advantage to making the instruction an
option. Later versions of the unprivileged ISA specifications
correctly indicate that fence.tso is mandatory.
|
5.1.1.3. RVI20U32 Optional Extensions
-
M Integer multiplication and division.
-
A Atomic instructions.
-
F Single-precision floating-point instructions.
-
D Double-precision floating-point instructions.
| The rationale to not include Q as an optional extension is that quad-precision floating-point is unlikely to be implemented in hardware, and so we do not require or expect software to expend effort optimizing use of Q instructions in case they are present. |
-
C Compressed Instructions.
-
Zifencei Instruction-fetch fence instruction.
-
Misaligned loads and stores may be supported.
-
Zicntr Basic counters.
| The Zicsr extension is not supported independent of the Zicntr or F extensions. |
-
Zihpm Hardware performance counters.
5.1.2. RVI20U64
RVI20U64 specifies the ISA features available to generic unprivileged execution environments.
5.1.2.1. RVI20U64 Mandatory Base
RV64I is the mandatory base ISA for RVI20U64, and is little-endian.
As per the unprivileged architecture specification, the ecall
instruction causes a requested trap to the execution environment.
Misaligned loads and stores might not be supported.
The fence.tso instruction is mandatory.
The fence.tso instruction was incorrectly described as
optional in the 2019 ratified specifications. However, fence.tso is
encoded within the standard fence encoding such that implementations
must treat it as a simple global fence if they do not natively support
TSO-ordering optimizations. As software can always assume without any
penalty that fence.tso is being exploited by a hardware
implementation, there is no advantage to making the instruction a
profile option. Later versions of the unprivileged ISA specifications
correctly indicate that fence.tso is mandatory.
|
5.1.2.3. RVI20U64 Optional Extensions
-
M Integer multiplication and division.
-
A Atomic instructions.
-
F Single-precision floating-point instructions.
-
D Double-precision floating-point instructions.
| The rationale to not include Q as a profile option is that quad-precision floating-point is unlikely to be implemented in hardware, and so we do not require or expect software to expend effort optimizing use of Q instructions in case they are present. |
-
C Compressed Instructions.
-
Zifencei Instruction-fetch fence instruction.
-
Misaligned loads and stores may be supported.
-
Zicntr Basic counters.
| The Zicsr extension is not supported independent of the Zicntr or F extensions. |
-
Zihpm Hardware performance counters.