惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
Recent Announcements
Recent Announcements
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
J
Java Code Geeks
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
U
Unit 42
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
腾讯CDC
I
InfoQ
GbyAI
GbyAI
博客园_首页

See you soon

哟,好久不见,无线打印 | See you soon 试试将文章版本化管理吧 | See you soon 使用 Quadlet 将 Podman 中的 Postgres 当作 systemd 服务运行 | See you soon 大他者,那个无时无刻都在盯着你的东西 | See you soon Laws of Software Engineering,软件工程定律 | See you soon 浅记多因素身份认证 | See you soon Linux 内核中的度量单位 | See you soon 重置 GPG 智能密钥 | See you soon 向 NAS 引入 samba | See you soon 无法重复键入的 Fcitx5 | See you soon ZFS 降级事故 | See you soon 记被 XanMod Kernel 和 AppArmor 联合坑的一次踩坑 | See you soon agent 的 skill 与 toolcall | See you soon 记一次服务器被挂恶意挖矿二进制 | See you soon 活着的 Arc | See you soon 令 acme.sh 使用 Cloudflare 的 DNS API 签发与续签证书 | See you soon 于 Tokio 中卸载 CPU Bound 任务 | See you soon 如我所见,梦破碎的时候 | See you soon 74LS 家族手册 | See you soon JDK Projects 备忘录 | See you soon 关于历史 | See you soon 用 curl 下载 OnePlus 的 ROM | See you soon 实用命令切片 | See you soon 再见,Oh My Zsh。 | See you soon 你不应该复用 strings.Builder | See you soon 博客的明日 | See you soon 被 AppArmor 击杀的 Dockge | See you soon AI 时代的自我 | See you soon 支持删除的布隆过滤器 | See you soon 基于栈的虚拟机与基于寄存器的虚拟机 | See you soon
RVA23 包含了什么 | See you soon
Krysztal Huang · 2025-07-11 · via See you soon

Ubuntu 计划在 25.10 的 RISC-V 架构中只支持 RVA23 配置文件,于是打算大概看下 RVA23 有什么是比较重大的指令集成为了必选

For Ubuntu 25.10 release we plan to raise the required RISC-V ISA profile family to RVA23.

The ubuntu-release-upgrader should stop upgrades beyond Ubuntu 24.04 on hardware that does not support the RVA23U64 profile. RVA23U64 [1] is the profile relevant for user space.

As there is no upgrade path from Ubuntu 25.04 Plucky for RVA20 systems, we should also stop upgrading these RISC-V systems from Noble to Plucky. Probably a warning is adequate here.

RVA23 配置文件旨在规范 RISC-V 64 位应用处理器的实现,使二进制软件生态系统能够依赖大量有保障的扩展功能和少量可发现的粗粒度选项。RVA23 明确不以支持最小功能集和大量细粒度扩展来实现更大的硬件实现灵活性为目标。

指令集

该系列仅规定了用户模式(RVA23U64)和管理模式(RVA23S64)两种配置方案。

用户模式强制性基础

拓展解释备注
RV64IThe mandatory base ISA for RVA23U64 and is little-endian.As per the unprivileged architecture specification, the ECALL instruction causes a requested trap to the execution environment.

用户模式强制性拓展

拓展解释备注
A原子指令
B位操作指令
C压缩指令
D双精度浮点指令
F单精度浮点指令
M整数乘除法指令
Zkt数据无关执行延迟控制
ZicsrCSR 控制状态寄存器指令(F 扩展隐含此功能)
Zihpm硬件性能计数器
Za64rs保留集必须为 64 字节连续自然对齐空间
Zfhmin半精度浮点运算
Zic64b缓存块必须为 64 字节大小且在地址空间中自然对齐
Zicbom缓存块管理指令
Zicbop缓存块预取指令
Zicboz缓存块清零指令
Ziccif具有可缓存性和一致性的主存区域必须支持指令获取,且对自然对齐的 2 的幂大小(最大 min(ILEN,XLEN),RVA23 为 32 位)的指令获取必须是原子的
Zicclsm必须支持对具有可缓存性和一致性的主存区域进行非对齐加载/存储操作
Ziccrse具有可缓存性和一致性的主存区域必须支持 RsrvEventual 特性
Zicntr基础计数器和定时器
Ziccamoa具有可缓存性和一致性的主存区域必须支持 A 扩展中的所有原子操作
Zihintpause暂停提示指令

RVA23U64 新增了以下强制性扩展:

拓展解释备注
V向量扩展注:V 在 RVA22U64 中是可选扩展
Zcb额外压缩指令集
Zfa额外浮点指令集
Supm指针掩码功能,执行环境至少需支持 PMLEN=0 和 PMLEN=7 的设置
Zawrs等待保留集指令
Zcmop压缩型可能操作指令
Zimop可能操作指令
Zvbb向量基础位操作指令
Zvkt向量数据无关执行延迟控制
Zicond整数条件操作指令
Zvfhmin向量最小半精度浮点运算
Zihintntl非临时局部性提示指令

用户模式可选拓展

拓展解释备注
Zbc标量无进位乘法
Zfh标量半精度浮点运算包含在 RVA22U64 标准中
Zvbc向量无进位乘法
Zvfh向量半精度浮点运算
Zabha字节与半字原子内存操作
Zacas比较并交换指令
Zvkng带 GCM 的向量密码学 NIST 算法标量密码扩展 Zkn/Zks 已移除;向量密码变为强制要求且性能显著提升;仅包含 GCM 版本以优化性能
Zvksg带 GCM 的向量密码学商密算法同 Zvkng
Zama16b未跨越 16 字节边界的非对齐加载/存储/原子内存操作保持原子性实现非对齐原子粒度(Sm1p13);将加入特权架构的 PMA 章节
Zfbfmin标量 BF16 格式转换
Ziccamoc具有可缓存性/一致性 PMA 的主存区域必须支持AMOCASQ级别的 PMA确保支持 CAS 指令;将加入特权架构的 PMA 章节
Zicfilp着陆垫机制
Zicfiss影子栈
Zvfbfmin向量 BF16 格式转换
Zvfbfwma向量 BF16 扩展乘加运算

管理模式强制性拓展

RVA23S64 除了包含所有 RVA23U64 的所有强制性拓展外还包含了如下的强制性拓展

拓展解释备注
Ss1p13监管者架构版本 1.13Ss1p13 取代了 Ss1p12。
Ssccptr具有可缓存性和一致性 PMA 的主存区域必须支持硬件页表读取
Sscofpmf计数器溢出和基于模式的过滤
Sscounterenw对于任何非只读零的hpmcounterscounteren中的相应位必须可写
Ssnpm指针掩码,senvcfg.PMMhenvcfg.PMM至少支持 PMLEN=0 和 PMLEN=7 的设置
Sstc监管者模式定时器中断Sstc 在 RVA22 中是可选的
Sstvala对于加载、存储和指令页面错误、访问错误及不对齐异常,以及由非EBREAKC.EBREAK指令执行引起的断点异常,stval必须写入引发错误的虚拟地址。对于虚拟指令和非法指令异常,stval必须写入引发错误的指令
Sstvecdstvec.MODE必须能够保存值 0(直接模式)。当stvec.MODE=Direct时,stvec.BASE必须能够保存任何有效的四字节对齐地址
Ssu64xlsstatus.UXL必须能够保存值 2(即必须支持 UXLEN=64)Ssu64xl 在 RVA22 中是可选的
Sv39基于页的 39 位虚拟内存系统
Svade当 A 位清零时访问页面或 D 位清零时写入页面会引发页面错误异常
Svbare必须支持satp模式的 Bare
Svinval细粒度地址转换缓存无效化
SvnapotNAPOT 转换连续性Svnapot 在 RVA22 中是可选的
Svpbmt基于页的内存类型
Zifencei指令获取屏障Zifencei 是 RVA23 应用处理器中支持指令缓存一致性的唯一标准方式,因此被强制要求。新的指令缓存一致性机制正在开发中(暂定名为 Zjid),未来可能作为可选功能加入。

其中 Sha 拓展包含了如下拓展

拓展解释备注
H虚拟机监控程序扩展
Shcounterenw对于任何非只读零的hpmcounterhcounteren中的相应位必须可写
Shgatpa对于satp中支持的每个虚拟内存方案 SvNN,必须支持相应的 hgatp SvNNx4 模式。同时必须支持hgatp的 Bare 模式增强型虚拟机监控程序扩展(完全等同于 Sha)在 RVA22 中是可选的
Shtvala在 ISA 允许的所有情况下,htval必须写入引发错误的客户机物理地址
Shvsatpasatp中支持的所有转换模式都必须在vsatp中支持
Shvstvala在上述所有stval描述的情况下,都必须写入vstval
Shvstvecdvstvec.MODE必须能够保存值 0(直接模式)。当vstvec.MODE=Direct 时,vstvec.BASE必须能够保存任何有效的四字节对齐地址
Ssstateen状态使能扩展的监管者模式视图。必须提供监管者模式(sstateen0-3)和虚拟机监控程序模式(hstateen0-3)的状态使能寄存器

管理模式可选拓展

拓展解释备注
Sdtrig调试触发器
Sspm监管者模式指针掩码,执行环境至少需支持 PMLEN=0 和 PMLEN=7 的设置
Ssstrict不存在非标准扩展。尝试执行未实现的指令或访问标准/保留编码空间中未实现的 CSR 将触发非法指令异常Ssstrict 是新的配置文件定义扩展,用于限制保留编码空间的行为。注 1:Ssstrict 不规定自定义编码空间或 CSR 的行为。注 2:Ssstrict 定义适用于声称兼容 RVA23 的执行环境,该环境必须包含虚拟机监控程序扩展。
Sv48基于页的 48 位虚拟内存系统
Sv57基于页的 57 位虚拟内存系统
Svadu硬件自动更新 A/D 位
Svvptc从无效 PTE 到有效 PTE 的转换将在有限时间内可见,无需显式内存管理屏障
Zkr熵 CSR

观测

  • 对于 RVA23 来讲,最显著的是之前 RVA22 的 V 拓展现在是强制性的,我想这也是面向 AI 时代的一个必然。如果一个 CPU 没有向量加速相关的拓展那么这个 CPU 的效率是无法达到现代的标准的。
  • 除此之外,Sha 现在也成为了必选,这是在 RISC-V 上运行虚拟机的基础

这也是 RVA23 的主打卖点:

Vector Extension: The Vector extension accelerates math-intensive workloads, including AI/ML, cryptography, and compression / decompression. Vector extensions yield better performance in mobile and computing applications with RVA23 as the baseline requirement for the Android RISC-V ABI.

Hypervisor Extension: The Hypervisor extension will enable virtualization for enterprise workloads in both on-premises server and cloud computing applications. This will accelerate the development of RISC-V-based enterprise hardware, operating systems, and software workloads. The Hypervisor extension will also provide better security for mobile applications by separating secure and non-secure components.

x86_64v4 的区别

由于我用的是 Zen4 系列的 Ryzen9 7945HX,所以以我的 CPU 为标准

包含如下指令集

fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze

  • 可以注意到,x86_64v4 上甚至有能效控制相关的指令集:apic, cppc, rapl, monitor。但是 RVA23 是没有的

以上只是非常主观的观测,指令集的指令还有更细致的区别但是因为太多了(而且我不太懂)就算了

不足之处?

指令集只是硬件层面的一部分,在硬件之上的软件支持也十分重要。这一点很依赖编译器和上游软件的实现,很可惜的是截至当前编译器和上游软件对 RVA23 的支持并不明朗,请查看 Yangyu Chen 的研究,原因讲的非常详细