@@ -91,7 +91,7 @@ instruction causes a requested trap to the execution environment.
91
91
92
92
==== RVB23U64 Mandatory Extensions
93
93
94
- The following mandatory extensions are also present in RVA22U64.
94
+ The following mandatory extensions were also present in RVA22U64.
95
95
96
96
- *M* Integer multiplication and division.
97
97
- *A* Atomic instructions.
@@ -136,41 +136,71 @@ The following mandatory extensions are also present in RVA23U64:
136
136
137
137
RVB23U64 has 18 profile options listed below.
138
138
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.
141
172
142
173
- *V* Vector Extension.
143
174
144
175
NOTE: Unclear if other Zve* extensions should also be supported in RVB.
145
176
146
- - *Zfhmin* Half-Precision Floating-point transfer and convert.
147
177
- *Zvfhmin* Vector FP16 conversion instructions.
148
-
149
178
- *Zvbb* Vector bitmanip extension.
179
+ - *Zvkt* Vector data-independent execution time.
150
180
151
- The following extensions are optional in both RVB23U64 and RVA23U64 :
181
+ The following extensions are expansion options in both RVA23U64 and RVB23U64 :
152
182
153
183
- *Zfh* Scalar Half-Precision Floating-Point (FP16).
154
184
- *Zbc* Scalar carryless multiply.
155
185
- *Zvfh* Vector half-precision floating-point (FP16).
156
186
- *Zfbfmin* Scalar BF16 FP conversions.
157
187
- *Zvfbfmin* Vector BF16 FP conversions.
158
188
- *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.
159
190
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:
166
195
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.
170
197
198
+ ===== Transitory Options
171
199
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 .
173
201
202
+ NOTE: Scalar crypto is no longer an option in RVA23U64, though the Zbc
203
+ extension has now been exposed as an expansion option.
174
204
175
205
==== RVB23U64 Recommendations
176
206
@@ -221,8 +251,6 @@ NOTE: Ss1p13 supersedes Ss1p12 but is not yet ratified.
221
251
NOTE: Svnapot is very low cost to provide, so is made mandatory even
222
252
in RVB.
223
253
224
- The following privileged extensions were also mandatory in RVA22S64:
225
-
226
254
- *Svbare* The `satp` mode Bare must be supported.
227
255
228
256
- *Sv39* Page-Based 39-bit Virtual-Memory System.
@@ -251,12 +279,12 @@ The following privileged extensions were also mandatory in RVA22S64:
251
279
252
280
- *Svinval* Fine-Grained Address-Translation Cache Invalidation
253
281
254
- - *Ssu64xl* `sstatus.UXL` must be capable of holding the value 2
255
- (i.e., UXLEN=64 must be supported).
256
-
257
282
- *Sstc* supervisor-mode timer interrupts.
258
283
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).
260
288
261
289
==== RVB23S64 Optional Extensions
262
290
@@ -265,21 +293,23 @@ RVB23S64 has the same unprivileged options as RVB23U64,
265
293
RVB23S64 has the same six privileged options (Sv48, Sv57, Svadu,
266
294
Sscofpmf, Zkr, H) as RVA23S64.
267
295
268
- The privileged optional extensions are:
296
+ ===== Localized Options
269
297
270
- - *Sv48* Page-Based 48-bit Virtual-Memory System .
298
+ There are no privileged localized options in RVB23S64 .
271
299
272
- - *Sv57* Page-Based 57-bit Virtual-Memory System.
300
+ ===== Development Options
273
301
274
- - *Svadu* Hardware A/D bit updates .
302
+ There are no privileged development options in RVB23S64 .
275
303
276
- - *Sscofpmf* Count Overflow and Mode-Based Filtering.
304
+ ===== Expansion Options
277
305
278
- - *Ssnpm* Pointer masking.
306
+ The following privileged expansion options are mandatory in RVA22S64 but options in RVB23S64:
279
307
280
- - *Zkr* Entropy CSR.
308
+ - *Ssnpm* Pointer masking, with `senvcfg.PME` supporting at minimum,
309
+ settings PMLEN=0 and PMLEN=7.
281
310
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:
283
313
284
314
- *H* The hypervisor extension.
285
315
@@ -306,6 +336,33 @@ When the hypervisor extension is implemented, the following are also mandatory:
306
336
`satp`, the corresponding hgatp SvNNx4 mode must be supported. The
307
337
`hgatp` mode Bare must also be supported.
308
338
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
+
309
366
==== RVB23S64 Recommendations
310
367
311
368
- Implementations are strongly recommended to raise illegal-instruction
0 commit comments