Skip to content

Commit 5278fb0

Browse files
committed
Updated to categorize options.
1 parent 9bb8ced commit 5278fb0

File tree

1 file changed

+87
-30
lines changed

1 file changed

+87
-30
lines changed

rvb23-profile.adoc

+87-30
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ instruction causes a requested trap to the execution environment.
9191

9292
==== RVB23U64 Mandatory Extensions
9393

94-
The following mandatory extensions are also present in RVA22U64.
94+
The following mandatory extensions were also present in RVA22U64.
9595

9696
- *M* Integer multiplication and division.
9797
- *A* Atomic instructions.
@@ -136,41 +136,71 @@ The following mandatory extensions are also present in RVA23U64:
136136

137137
RVB23U64 has 18 profile options listed below.
138138

139-
The following extensions are are mandatory in RVA23U64 but are
140-
optional in RVB23U64:
139+
===== Localized Options
140+
141+
The following extensions are localized options in both RVA23U64 and RVB23U64:
142+
143+
- *Zvbc* Vector carryless multiply.
144+
- *Zvkng* Vector Crypto NIST Algorithms including GHASH.
145+
- *Zvksg* Vector Crypto ShangMi Algorithms including GHASH.
146+
147+
The following extensions options are localized options in RVB23U64 but
148+
are not present in RVA23U64:
149+
150+
- *Zvkg* Vector GHASH instructions
151+
- *Zvknc* Vector Crypto NIST Algorithms with carryless multiply
152+
- *Zvksc* Vector Crypto ShangMi Algorithms with carryless multiply
153+
154+
NOTE: RVA profiles mandate the higher-performing but more expensive
155+
GHASH options when adding vector crypto. To reduce implementation
156+
cost, RVB profiles also allow these carryless multiply options (Zvknc
157+
and Zvksc) to implement GCM efficiently, with GHASH available as a
158+
separate option.
159+
160+
===== Development Options
161+
162+
The following are new development options intended to become mandatory in RVB24U64:
163+
164+
- *Zacas* Compare-and-swap
165+
166+
===== Expansion Options
167+
168+
The following extensions are mandatory in RVA23U64 but are expansion
169+
options in RVB23U64:
170+
171+
- *Zfhmin* Half-Precision Floating-point transfer and convert.
141172

142173
- *V* Vector Extension.
143174

144175
NOTE: Unclear if other Zve* extensions should also be supported in RVB.
145176

146-
- *Zfhmin* Half-Precision Floating-point transfer and convert.
147177
- *Zvfhmin* Vector FP16 conversion instructions.
148-
149178
- *Zvbb* Vector bitmanip extension.
179+
- *Zvkt* Vector data-independent execution time.
150180

151-
The following extensions are optional in both RVB23U64 and RVA23U64:
181+
The following extensions are expansion options in both RVA23U64 and RVB23U64:
152182

153183
- *Zfh* Scalar Half-Precision Floating-Point (FP16).
154184
- *Zbc* Scalar carryless multiply.
155185
- *Zvfh* Vector half-precision floating-point (FP16).
156186
- *Zfbfmin* Scalar BF16 FP conversions.
157187
- *Zvfbfmin* Vector BF16 FP conversions.
158188
- *Zvfbfwma* Vector BF16 widening mul-add.
189+
- *Zama16b* Misaligned loads, stores, and AMOs to main memory regions that do not cross a naturally aligned 16-byte boundary are atomic.
159190

160-
- *Zvbc* Vector carryless multiply.
161-
- *Zvkng* Vector Crypto NIST Algorithms including GHASH.
162-
- *Zvksg* Vector Crypto ShangMi Algorithms including GHASH.
163-
164-
The following options are optional in RVB23U64 but are not present in
165-
RVA23U64:
191+
The following are RVA23U64 development options as they are intended to
192+
become mandatory in RVA24U64 profile, but are considered expansion
193+
options for RVB23U64 as they are not intended to be made mandatory in
194+
RVB profiles:
166195

167-
- *Zvkg* Vector GHASH instructions
168-
- *Zvknc* Vector Crypto NIST Algorithms with carryless multiply
169-
- *Zvksc* Vector Crypto ShangMi Algorithms with carryless multiply
196+
- *Zvbc* Vector carryless multiply.
170197

198+
===== Transitory Options
171199

172-
NOTE: If either of Zvkn or Zvks is implemented, RVB mandates at least some support to implement GCM efficiently through either Zvbc or Zvkg.
200+
There are no transitory options in RVA23U64.
173201

202+
NOTE: Scalar crypto is no longer an option in RVA23U64, though the Zbc
203+
extension has now been exposed as an expansion option.
174204

175205
==== RVB23U64 Recommendations
176206

@@ -221,8 +251,6 @@ NOTE: Ss1p13 supersedes Ss1p12 but is not yet ratified.
221251
NOTE: Svnapot is very low cost to provide, so is made mandatory even
222252
in RVB.
223253

224-
The following privileged extensions were also mandatory in RVA22S64:
225-
226254
- *Svbare* The `satp` mode Bare must be supported.
227255

228256
- *Sv39* Page-Based 39-bit Virtual-Memory System.
@@ -251,12 +279,12 @@ The following privileged extensions were also mandatory in RVA22S64:
251279

252280
- *Svinval* Fine-Grained Address-Translation Cache Invalidation
253281

254-
- *Ssu64xl* `sstatus.UXL` must be capable of holding the value 2
255-
(i.e., UXLEN=64 must be supported).
256-
257282
- *Sstc* supervisor-mode timer interrupts.
258283

259-
NOTE: Sstc was optional in RVA22.
284+
- *Sscofpmf* Count Overflow and Mode-Based Filtering.
285+
286+
- *Ssu64xl* `sstatus.UXL` must be capable of holding the value 2
287+
(i.e., UXLEN=64 must be supported).
260288

261289
==== RVB23S64 Optional Extensions
262290

@@ -265,21 +293,23 @@ RVB23S64 has the same unprivileged options as RVB23U64,
265293
RVB23S64 has the same six privileged options (Sv48, Sv57, Svadu,
266294
Sscofpmf, Zkr, H) as RVA23S64.
267295

268-
The privileged optional extensions are:
296+
===== Localized Options
269297

270-
- *Sv48* Page-Based 48-bit Virtual-Memory System.
298+
There are no privileged localized options in RVB23S64.
271299

272-
- *Sv57* Page-Based 57-bit Virtual-Memory System.
300+
===== Development Options
273301

274-
- *Svadu* Hardware A/D bit updates.
302+
There are no privileged development options in RVB23S64.
275303

276-
- *Sscofpmf* Count Overflow and Mode-Based Filtering.
304+
===== Expansion Options
277305

278-
- *Ssnpm* Pointer masking.
306+
The following privileged expansion options are mandatory in RVA22S64 but options in RVB23S64:
279307

280-
- *Zkr* Entropy CSR.
308+
- *Ssnpm* Pointer masking, with `senvcfg.PME` supporting at minimum,
309+
settings PMLEN=0 and PMLEN=7.
281310

282-
The following hypervisor extension and mandates were also in RVA22S64:
311+
The following hypervisor extension and mandates were also in RVA22S64
312+
and are available as an expansion option in RVB23S64:
283313

284314
- *H* The hypervisor extension.
285315

@@ -306,6 +336,33 @@ When the hypervisor extension is implemented, the following are also mandatory:
306336
`satp`, the corresponding hgatp SvNNx4 mode must be supported. The
307337
`hgatp` mode Bare must also be supported.
308338

339+
- If the hypervisor extension is implemented and pointer masking
340+
(Ssnpm) is supported then `henvcfg.PME` must support at minimum,
341+
settings PMLEN=0 and PMLEN=7.
342+
343+
The following privileged expansion options are also present in RVA23S64:
344+
345+
- *Sv48* Page-Based 48-bit Virtual-Memory System.
346+
347+
- *Sv57* Page-Based 57-bit Virtual-Memory System.
348+
349+
- *Svadu* Hardware A/D bit updates.
350+
351+
- *Zkr* Entropy CSR.
352+
353+
- *Svadu* Hardware A/D bit updates.
354+
355+
- *Sdext* Debug triggers
356+
357+
- *Ssstrict* No non-conforming extensions are present. Attempts to
358+
execute unimplemented opcodes or access unimplemented CSRs in the
359+
standard or reserved encoding spaces raises an illegal instruction
360+
exception that results in a contained trap to the supervisor-mode
361+
trap handler.
362+
363+
NOTE: Ssstrict does not prescribe behavior for the custom encoding
364+
spaces or CSRs.
365+
309366
==== RVB23S64 Recommendations
310367

311368
- Implementations are strongly recommended to raise illegal-instruction

0 commit comments

Comments
 (0)