diff options
Diffstat (limited to 'src/naming.tex')
| -rw-r--r-- | src/naming.tex | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/src/naming.tex b/src/naming.tex deleted file mode 100644 index 97e24c1..0000000 --- a/src/naming.tex +++ /dev/null @@ -1,161 +0,0 @@ -\chapter{ISA Subset Naming Conventions} -\label{naming} - -This chapter describes the RISC-V ISA subset naming scheme that is -used to concisely describe the set of instructions present in a -hardware implementation, or the set of instructions used by an -application binary interface (ABI). - -\begin{commentary} -The RISC-V ISA is designed to support a wide variety of -implementations with various experimental instruction-set extensions. -We have found that an organized naming scheme simplifies software -tools and documentation. -\end{commentary} - -\section{Case Sensitivity} - -The ISA naming strings are case insensitive. - -\section{Base Integer ISA} -RISC-V ISA strings begin with either RV32I, RV32E, RV64I, or RV128I -indicating the supported address space size in bits for the base -integer ISA. - -\section{Instruction-Set Extension Names} - -Standard ISA extensions are given a name consisting of a single -letter. For example, the first four standard -extensions to the integer bases are: -``M'' for integer multiplication and division, -``A'' for atomic memory instructions, -``F'' for single-precision floating-point instructions, and -``D'' for double-precision floating-point instructions. -Any RISC-V instruction-set variant can be succinctly described by -concatenating the base integer prefix with the names of the included -extensions. For example, ``RV64IMAFD''. - -We have also defined an abbreviation ``G'' to represent the ``IMAFD'' -base and extensions, as this is intended to represent our standard -general-purpose ISA. - -Standard extensions to the RISC-V ISA are given other reserved -letters, e.g., ``Q'' for quad-precision floating-point, or -``C'' for the 16-bit compressed instruction format. - -\section{Version Numbers} -Recognizing that instruction sets may expand or alter over time, we -encode subset version numbers following the subset name. Version -numbers are divided into major and minor version numbers, separated by -a ``p''. If the minor version is ``0'', then ``p0'' can be omitted -from the version string. Changes in major version numbers imply a -loss of backwards compatibility, whereas changes in only the minor -version number must be backwards-compatible. For example, the -original 64-bit standard ISA defined in release 1.0 of this manual can -be written in full as ``RV64I1p0M1p0A1p0F1p0D1p0'', more concisely as -``RV64I1M1A1F1D1'', or even more concisely as ``RV64G1''. The G ISA -subset can be written as ``RV64I2p0M2p0A2p0F2p0D2p0'', or more -concisely ``RV64G2''. - -We introduced the version numbering scheme with the second release, -which we also intend to become a permanent standard. Hence, we define -the default version of a standard subset to be that present at the -time of this document, e.g., ``RV32G'' is equivalent to -``RV32I2M2A2F2D2''. - -\section{Underscores} - -Underscores ``\_'' may be used to separate ISA subset components to -improve readability and to provide disambiguation. For example, ``RV32I2\_M2\_A2\_F2\_D2''. - -\section{Additional Standard Extension Names} - -Standard extensions can also be named using a single ``Z'' followed by a name -beginning with a letter and an optional version number. For example, -``Zifencei'' names the instruction-fetch fence extension described in -Chapter~\ref{chap:zifencei}; ``Zifencei2'' and ``Zifencei2p0'' name version -2.0 of same. - -Extensions with the ``Z'' prefix must be separated -from other multi-letter extensions by an underscore, e.g., -``RV32IMACZifencei\_Zicsr''. - -\section{Non-Standard Extension Names} - -Non-standard subsets are named using a single ``X'' followed by a name -beginning with a letter and an optional version number. -For example, ``Xhwacha'' names the Hwacha vector-fetch ISA extension; -``Xhwacha2'' and ``Xhwacha2p0'' name version 2.0 of same. - -Non-standard extensions must be separated from other multi-letter extensions -by an underscore. For example, an ISA with non-standard extensions -Argle and Bargle may be named ``RV64IZifencei\_Xargle\_Xbargle''. - -\section{Supervisor-level Instruction-Set Extensions} -Standard supervisor instruction-set extensions are defined in Volume II, but -are named using ``S'' as a prefix, followed by a supervisor subset name -beginning with a letter and an optional version number. - -Supervisor extensions must be separated from other multi-letter extensions -by an underscore. - -\section{Supervisor-level Extensions} -Non-standard extensions to the supervisor-level ISA are defined using -the ``SX'' prefix. - -\section{Subset Naming Convention} -Table~\ref{isanametable} summarizes the standardized subset names. -~\\ -\begin{table}[h] -\center -\begin{tabular}{|l|c|} -\hline -Subset & Name \\ -\hline -\hline -\multicolumn{2}{|c|}{Standard General-Purpose ISA}\\ -\hline -Integer & I \\ -Integer Multiplication and Division & M \\ -Atomics & A \\ -Single-Precision Floating-Point & F \\ -Double-Precision Floating-Point & D \\ -\hline -General & G = IMAFD \\ -\hline -\multicolumn{2}{|c|}{Standard Unprivileged Extensions}\\ -\hline -Quad-Precision Floating-Point & Q \\ -Decimal Floating-Point & L \\ -16-bit Compressed Instructions & C \\ -Bit Manipulation & B \\ -Dynamic Languages & J \\ -Transactional Memory & T \\ -Packed-SIMD Extensions & P \\ -Vector Extensions & V \\ -User-Level Interrupts & N \\ -\hline -\hline -\multicolumn{2}{|c|}{Non-Standard Unprivileged Extensions}\\ -\hline -Non-standard extension ``abc'' & Xabc \\ -\hline -\hline -\multicolumn{2}{|c|}{Standard Supervisor-Level ISA}\\ -\hline -Supervisor extension ``def'' & Sdef \\ -\hline -\hline -\multicolumn{2}{|c|}{Non-Standard Supervisor-Level Extensions}\\ -\hline -Supervisor extension ``ghi'' & SXghi \\ -\hline -\end{tabular} -\caption{Standard ISA subset names. The table also defines the - canonical order in which subset names must appear in the name - string, with top-to-bottom in table indicating first-to-last in the - name string, e.g., RV32IMAFDQC is legal, whereas RV32IMAFDCQ is not.} -\label{isanametable} -\end{table} - - |
