• All RISC-V standard extensions that are not a single capital letter start with either a S (Privileged ISA extension) or a Z (Unprivileged ISA extension).
  • The second letter of the extension name specifies the category of the extension.

S* Categories (Privileged ISA)

The second letter is the category of the extension (usually the privilege level associated with the extension).

S* PrefixMeaning
ShHypervisor (HS-mode and VS-mode)
SvVirtual memory
Level immediately less than "?" level

A new convention started with the pointer masking extension in May 2023 was to use a 3rd letter of "n" to indicate the next lower privilege level (whatever that is for a particular implementation). The extension only exerts control at the next lower level, not at all lower levels.

Z* Categories (Unprivileged ISA)

The second letter is often the original RISC-V capital letter extension name as listed in the RISC-V Unprivileged ISA specification. For example, A = Atomics so Za is the prefix for atomic-related extensions.

Z* PrefixMeaningZ* PrefixMeaning
ZbBit manipulationZkScalar crypto
ZcCompressedZmMultiplication and division
ZfSingle-precision floating-pointZvVector
ZhHypervisorZvkVector crypto
ZiBase integer ISA

S* Examples

S* ExtensionMeaning
ShvstvecdThe vstvec.MODE CSR field supports direct mode
SvbareThe S-mode virtual-memory satp "Bare" mode is supported

Privileged Architecture version 1.13 (p = period)

Sv39The S-mode virtual-memory address size is 39 bits

Z* Examples

Z* ExtensionMeaning
ZbbBasic bit manipulation instructions
ZfhminHalf-precision floating-point transfer and conversion instructions
ZkneAES scalar encryption 
ZjpmPointer-masking extension for J category
ZicsrCSR read/write instructions
Zicbom Cache block management instructions

RISC-V Reference Links

These links explain the naming convention shown above.

 RISC-V Unprivileged ISA Specification

See "ISA Extension Naming Conventions" chapter.

Google groups post in 2017 Excerpts

The current RISC-V standard instruction-set namespace consists of 26 single-letter names, and each letter typically corresponds to a relatively large number of instructions. While this has worked well to concisely specify the initial set of extensions and to convey the concept of a modular instruction set, there is a need for a larger instruction-set namespace to accommodate future instruction-set extensions.

The proposal is to use multicharacter names beginning with Z to expand the namespace for standard extensions, for example, Zftrig to name the ftrig extension. Underscores are used in an ISA name string to separate Z names from other components, and instruction-set names are case-insensitive.

All Z instruction-set names begin with a single letter that indicates the category of the extension. All existing single-letter names retain their existing meaning, and are given alternate names in the Z namespace of Z followed by the single letter, e.g., Za = A. Each existing single letter name is now also considered to name a category, and additional instruction-set extensions can be added to the existing single-letter categories, e.g., Zftrig. The unallocated single-letter names are now reserved for future instruction-set categories, rather than a single fixed extension.

GitHub post in 2021 to RISC-V ISA manual Excerpts

The convention is that S* represents extensions to the Privileged architecture (versus the Unprivileged arch). The second letter represents categories:

  • v = virtual memory
  • d = debug
  • m = M-mode
  • s = S-mode

ISA extensions that include M-mode and S-mode functionality will be represented as two privilege-level specific extensions.

  • No labels