ISA & Software · RVA23 · Toolchains

After RVA23: CFI, the Three Matrix Extension Routes, and What RVA23.1 Adds — Canonical's Distro View

📅 2026-09-22 ⏱ 11 min read 🔗 Source: Ubuntu blog / Canonical (Jon Taylor, 2026-09-15) + RISC-V spec documents

RVA23 was the big ratification of the decade: the profile that finally made vector 1.0, hypervisor, and a curated extension set mandatory for application-class RISC-V silicon. The obvious question every engineering team now asks is what comes next — and who decides. Canonical's Jon Taylor published a precise answer on the Ubuntu blog this week (Evolution of the RISC-V ISA. What next after RVA23?, September 15, 2026), and it is the best distro-side map of the post-RVA23 landscape we have seen. This article annotates it with the official spec references, because the three areas it identifies — security (CFI), performance (matrix), and minor profile revisions (RVA23.1) — are exactly where silicon and software roadmaps will collide over the next two years.

Honesty note. Everything below is an annotation of Canonical's blog post and the official RISC-V specification documents it links. We add context from our own prior coverage (SpacemiT IME, NVIDIA VME), but we add no silicon numbers, no performance claims, and no dates beyond what Canonical and the RISC-V community have published. Where a kernel patch is still out-of-tree, we say so.

The Three Fronts of Post-RVA23 Innovation

Canonical groups upcoming ISA work into three buckets, and the grouping is worth adopting verbatim:

AreaWhat it coversStatus per Canonical
Security extensionsControl Flow Integrity (CFI) — Zicfilp + ZicfissCFI ratified by RISC-V International in 2024; other security extensions moving toward ratification in 2026–2027
Performance extensionsMatrix compute — three routes: IME, VME, AMEAt different maturity levels; ratification pending for some routes
Minor profile revisionsRVA23.1 — new development and expansion optionsIn public review (RVA23.1 / RVB23.1 announcement on riscv.org isa-dev)

The key framing: RVA23 provides the deployment baseline "for many years to come," and RVA23 binaries will run on newer silicon — Canonical is explicit that there is no backwards-compatibility cliff. Innovation lands around the baseline, not through it.

Control Flow Integrity: Zicfilp + Zicfiss

CFI is a lightweight, optional extension pair targeting the dominant exploit families of the last two decades: Return-Oriented Programming (ROP) and Call/Jump-Oriented Programming (COP/JOP). Both attacks redirect control flow to unintended code locations and chain existing code snippets ("gadgets") from the program binary to run arbitrary logic. CFI does not try to stop data corruption; it stops the corrupted data from steering execution.

ExtensionMechanismAttack it stops
ZicfilpLanding pads. Indirect calls/jumps must land on an annotated landing-pad instruction. A branch to any location that is not a landing pad traps — an attacker cannot jump to an arbitrary mid-function offset.COP/JOP — hijacked indirect branches (function pointers, jump tables)
ZicfissShadow stack. On every function call the return address is stored twice — on the normal stack and on a separate shadow stack. On return, the two values are compared; a mismatch traps before the hijacked return executes.ROP — stack-smashing that overwrites the saved return address

They are two independent extensions: a core can implement Zicfilp without Zicfiss and vice versa. That matters for silicon sizing — landing-pad checking is cheap; a shadow stack needs a second return-address storage that must itself be protected.

Backward Compatibility: The Zimop Caveat

This is the most operationally interesting paragraph in Canonical's post. The extensions were designed to maximize compatibility with existing RVA23 hardware: where the hardware implementation is absent, CFI instructions are ignored (treated as no-ops). That lets compilers and toolchains ship CFI instrumentation today, before any CFI silicon exists — the binaries run everywhere, and the protection silently activates on the first CFI-capable core.

One trap: on pre-RVA23 hardware that lacks Zimop (may-be-operations support), Zicfiss instructions will trap instead of being ignored. Canonical is honest about the trade-off — no-op encodings are "not ideal for performance and code size" — but the net position is a pragmatic one: software (compiler toolchains) can adopt first, and "as soon as the hardware is available it will 'just work'." GCC and LLVM already support CFI today, per Canonical.

Deployment rule of thumb. If your fleet includes pre-RVA23 cores without Zimop, a Zicfiss-instrumented binary will fault there. Gate the instrumentation by profile (RVA23+), not by ISA string parsing.

Matrix: Three Routes, Three OS Bills

AI/ML is the growth engine of RISC-V, and nearly every AI workload bottoms out in matrix math. But a smart-sensor endpoint and a training server need very different matrix machinery, so RISC-V is growing three distinct routes rather than one mandatory monolith:

RouteFull nameArchitectural stateOS impact (context switch)Toolchain effort per Canonical
VMEVector Matrix ExtensionSame as standard vector state — no new registers beyond what RVV already savesNone. No OS changes needed.Relatively simple to support
IMEIntegrated Matrix ExtensionExtends the vector register file and adds additional result registersOS changes required. Kernel must save/restore the added registers on context switch.Moderate; intrinsics-first is realistic
AMEAttached Matrix ExtensionCompletely new register file, separate from vectorOS changes required. Largest new state to manage."A lot of work" per Canonical

The discriminator is who pays for the state. VME reuses the vector context switch that kernels already perform, so a VME-equipped core is invisible to the OS. IME and AME both add architectural state, which means the kernel's context-switch path must be taught about the new registers — and until that lands, an OS that ignores them will silently corrupt matrix state across task switches.

This taxonomy maps directly onto silicon we have covered on this site: SpacemiT's K3 implements IME on its A100 AI cores (IME 1.0 per-core private, IME 2.0 dual-core shared, per the K3 preview paper), which is why deepin 25's K3 port and the MNN inference stack both required SpacemiT-patched toolchains. NVIDIA's Hot Chips 2026 platform contract for RISC-V host CPUs, on the other hand, references the VME-family route for matrix operations. The two routes are not competitors for the same socket — IME targets integrated AI CPUs, VME/AME target different points in the scale spectrum. For the ratification-calendar view of the same three routes (including the VME internal-review dates), see our earlier article RISC-V Matrix Extensions in 2026: IME, VME and AME; this post is the distro/toolchain view, that one is the standards-timeline view.

Runtime Discovery with sys_riscv_hwprobe()

Because the same library may run on VME, IME, or AME silicon — or none of the above — Canonical highlights the sys_riscv_hwprobe() Linux system call (which their earlier custom-instructions article introduced): the application asks the kernel which extensions are implemented, and picks the right code path at runtime. The practical pattern is one library, multiple compiled implementations, runtime selection:

/* Illustrative sketch of the riscv_hwprobe UAPI shape.
   Exact key/value semantics: linux/hwprobe.h UAPI headers and the
   Ubuntu "custom instructions" article linked in Sources. */
#include <sys/hwprobe.h>

struct riscv_hwprobe pairs[] = {
    { .key = RISCV_HWPROBE_KEY_IMA_EXT_0, .value = 0 },
};
__riscv_hwprobe(pairs, 1, 0, NULL, 0);

if (pairs[0].value & HWPROBE_EXT_ZVFH /* example bit */) {
    /* take the matrix-accelerated path */
} else {
    /* fall back to the scalar/RVV path */
}

Canonical's conclusion for library authors: compile support for multiple implementation choices into the same binary, and let hwprobe select at runtime. That is the same dispatch model Arm has used with HWCAP for years — RISC-V gets it as a first-class UAPI rather than an afterthought.

Out-of-Tree Work While We Wait: Xuantie

Standard ratification takes time, and vendors do not wait. Canonical points to Xuantie (Alibaba DAMO Academy), which is working on a version of the matrix extensions in the open (XUANTIE-RV/riscv-matrix-extension-spec on GitHub) and has developed toolchain support in a private GCC branch — the classic out-of-tree pattern: spec public, toolchain vendor-first. We flagged the same pattern in our K3 coverage; it is the price of being early, and the reason distro integration always trails silicon announcements.

RVA23.1: Stability by Design

Profile minor revisions are where RISC-V's governance philosophy shows most clearly: minor revisions deliberately include no new mandatory extensions. That is what keeps RVA23 software stable for years. Instead, each minor revision introduces two kinds of optional items:

Option typeMeaningWhy it exists
Development optionA precursor that is expected to become mandatory in a future profileGives software a "softer landing" — ship support now, before the hardware requirement bites
Expansion optionIntended to remain optional permanentlyTargets applications where implementation cost is justified but is too large to mandate for all profile users

RVA23.1 adds three development options and two expansion options. Canonical singles out the three that matter for Ubuntu (and, by extension, every general-purpose distro):

ExtensionWhat it doesWho benefits
Ssdbltrap (Double Trap Handling)Covers a narrow but nasty corner case: if a second trap occurs while the first trap handler is still in a non-reentrant state, the system can crash and corrupt memory. Ssdbltrap lets machine mode or hypervisor mode safely catch the second trap.Kernel/hypervisor robustness — fewer fatal double-fault paths, lower memory-corruption risk
Sscfg (Supervisor Counter Delegation)Lets supervisor (S-mode) manage and configure performance counter registers directly, without a round-trip through machine-mode firmware.Linux perf — measurable profiling overhead reduction
Ssctr (Control Transfer Records)Records branch history in hardware for much better branch profiling — the enabling mechanism for Profile-Guided Optimization (PGO) on RISC-V.Compilers and profilers; PGO requires upstream Linux kernel support to expose branch record buffers via perf — patches exist but are not yet accepted upstream

Note the honest dependency chain in the Ssctr row: the extension is one leg of a three-legged stool — silicon support, kernel plumbing (perf), and compiler/profiler integration. Shipping any one without the others buys nothing, which is exactly why the "development option" staging exists.

Toolchain Status, Summarized

GroupToolchain status per Canonical
CFIGCC and LLVM support it already today
MatrixTwo approaches: compiler intrinsics (assembly-like, works now) vs. having the compiler automatically target matrix instructions (harder). VME relatively simple; AME a lot of work. Out-of-tree vendor work exists (Xuantie private GCC branch) while ratification is pending.
RVA23.1Some features accessed via intrinsics or CSR assembly rather than code generation; extensions like Ssctr interface directly to compiler profilers

What This Means for Builders

Conclusion

Canonical's post is refreshingly free of hype: RVA23 holds as the common platform, backwards compatibility is preserved by construction, and the interesting work proceeds on three clearly separated tracks — CFI for security, three matrix routes for AI, and staged minor revisions for stability. For engineering teams the practical takeaway is that the software can move first: CFI toolchains exist today, hwprobe-based dispatch is a UAPI you can use today, and the development-option mechanism exists precisely so that today's optional work becomes tomorrow's mandatory baseline without breaking anyone's binaries.

RVA23 是这十年最重要的一次标准批准:它首次将向量 1.0、Hypervisor 以及一组精心挑选的扩展定为应用级 RISC-V 芯片的强制基线。现在每个工程团队最关心的问题是:接下来是什么?谁在决定? Canonical 的 Jon Taylor 本周在 Ubuntu 官方博客发表了《Evolution of the RISC-V ISA. What next after RVA23?》(2026 年 9 月 15 日),这是目前最好的发行版视角的 RVA23 之后路线图。本文在它的基础上补充官方规格文档链接进行注解——它指出的三个方向(安全 CFI、性能矩阵、小版本修订 RVA23.1)正是未来两年芯片路线图与软件路线图碰撞最剧烈的地方。

诚实声明。 以下内容是对 Canonical 博客及其链接的官方 RISC-V 规格文档的注解,并加入本站此前对 SpacemiT IME、NVIDIA VME 的报道作为上下文。我们不添加任何芯片性能数字、不添加任何 Canonical 与 RISC-V 社区未公布的日期。内核补丁尚未进入主线的部分,我们明确标注。

RVA23 之后创新的三个战线

领域覆盖内容Canonical 给出的状态
安全扩展控制流完整性(CFI)—— Zicfilp + ZicfissCFI 已于 2024 年获 RISC-V International 批准;其他安全扩展正走向 2026–2027 年批准
性能扩展矩阵计算——三条路线:IME、VME、AME成熟度不一;部分路线批准仍在进行中
小版本修订RVA23.1——新增开发选项与扩展选项公开评审中(RVA23.1 / RVB23.1 公告见 riscv.org isa-dev)

关键框架:RVA23 是未来多年稳定的部署基线,且 RVA23 二进制可以直接跑在新硅片上——Canonical 明确表示不存在向后兼容断崖。创新围绕基线展开,而不是穿过它。

控制流完整性:Zicfilp + Zicfiss

CFI 是一对轻量级可选扩展,针对的是过去二十年最主要的漏洞利用家族:返回导向编程(ROP)调用/跳转导向编程(COP/JOP)。两类攻击都把控制流重定向到意外的代码位置,并串联程序二进制中现成的代码片段("gadget")来执行任意逻辑。CFI 不阻止数据被篡改,它阻止被篡改的数据劫持执行流

扩展机制阻止的攻击
Zicfilp着陆垫(Landing pad)。间接调用/跳转必须落在带注解的着陆垫指令上;跳到任何非着陆垫位置都会触发陷入(trap)——攻击者无法跳到函数内部任意偏移。COP/JOP——被劫持的间接分支(函数指针、跳转表)
Zicfiss影子栈(Shadow stack)。每次函数调用时返回地址存两份——常规栈与独立影子栈各一份;返回时两者比对,不一致则在被劫持的返回执行前陷入。ROP——覆写栈上保存的返回地址的栈溢出攻击

二者是相互独立的扩展:核心可以实现 Zicfilp 而不实现 Zicfiss,反之亦然。这对芯片面积有意义——着陆垫检查很便宜,而影子栈需要一份自身也要被保护的返回地址存储。

向后兼容:Zimop 陷阱

这是 Canonical 文中运营层面最有意思的一段。这对扩展被设计为最大化兼容现有 RVA23 硬件:硬件未实现时,CFI 指令被忽略(当作 NOP)。这意味着编译器和工具链可以今天就输出 CFI 插桩——二进制在哪都能跑,保护在第一颗支持 CFI 的核心上自动激活。

一个陷阱:在不支持 Zimop(may-be-operations)的 pre-RVA23 硬件上,Zicfiss 指令会陷入而不是被忽略。Canonical 也不回避代价——NOP 编码"对性能和代码体积不理想"——但净结论很务实:软件(编译器工具链)先行,"硬件一到就能直接工作"。据 Canonical,GCC 与 LLVM 今天已经支持 CFI

部署经验法则。如果你的设备群里有不带 Zimop 的 pre-RVA23 核心,Zicfiss 插桩的二进制会在那些机器上出错。请按 profile(RVA23+)门控插桩,不要靠解析 ISA 字符串。

矩阵:三条路线、三张 OS 账单

AI/ML 是 RISC-V 的增长引擎,而几乎所有 AI 负载最终都归结为矩阵运算。但智能传感器端点与训练服务器需要的矩阵机制完全不同,因此 RISC-V 生长出三条不同路线,而不是一个强制的大一统标准:

路线全称架构状态OS 影响(上下文切换)工具链投入(Canonical)
VMEVector Matrix Extension(向量矩阵扩展)与标准向量状态相同——不新增 RVV 之外需要保存的寄存器无。不需要任何 OS 改动。相对简单
IMEIntegrated Matrix Extension(集成矩阵扩展)扩展向量寄存器堆并新增结果寄存器需要 OS 改动。内核上下文切换必须保存/恢复新增寄存器。中等;intrinsics 先行比较现实
AMEAttached Matrix Extension(附加矩阵扩展)全新的独立寄存器堆,与向量分离需要 OS 改动。新增状态最多。Canonical 原话:"a lot of work"

分水岭在于谁为新状态买单。VME 复用内核已经在做的向量上下文切换,所以 VME 核心对 OS 透明。IME 与 AME 都新增架构状态,内核上下文切换路径必须学会处理新寄存器——在那之前,无视它们的 OS 会在任务切换时静默破坏矩阵状态。

这套分类直接对应本站报道过的硅片:SpacemiT K3 的 A100 AI 核实现的是 IME(据 K3 预印本:IME 1.0 每核私有、IME 2.0 双核共享),这正是 deepin 25 的 K3 移植与 MNN 推理栈都需要进迭时空打过补丁的工具链的原因。而 NVIDIA 在 Hot Chips 2026 公布的 RISC-V 主机 CPU 平台契约,矩阵部分引用的是 VME 系路线。两条路线并不在同一个插槽上竞争——IME 面向集成式 AI CPU,VME/AME 面向规模谱系上的不同位置。

用 sys_riscv_hwprobe() 做运行时探测

因为同一个库可能跑在 VME、IME 或 AME 硅片上——或者都没有——Canonical 强调了 sys_riscv_hwprobe() Linux 系统调用(其早前的自定义指令文章介绍过):应用向内核查询实现了哪些扩展,在运行时选择正确的代码路径。实践模式是一个库、多份编译产物、运行时选择(代码示例见英文区)。

Canonical 给库作者的结论:把多种实现选择编译进同一个二进制,用 hwprobe 在运行时选择。这与 Arm 用 HWCAP 多年的分发模型相同——只是 RISC-V 把它做成了一等 UAPI。

等待批准期间的树外工作:玄铁

标准批准需要时间,而厂商不会等待。Canonical 点名玄铁(阿里巴巴达摩院):在 GitHub 上公开推进一个矩阵扩展版本(XUANTIE-RV/riscv-matrix-extension-spec),并在私有 GCC 分支中开发了工具链支持——典型的树外模式:规格公开、工具链厂商先行。我们在 K3 报道中标注过同样的模式;这是做先行者的代价,也是发行版集成总是滞后于芯片发布的原因。

RVA23.1:设计即稳定

profile 小版本修订是 RISC-V 治理哲学体现最明显的地方:小版本修订刻意不包含任何新的强制扩展。这正是 RVA23 软件能多年保持稳定的原因。每次小版本只引入两类可选条目:

选项类型含义存在理由
开发选项(Development option)预期在未来 profile 中成为强制的前身给软件一个"更软的着陆"——在硬件要求生效之前先完成支持
扩展选项(Expansion option)打算永久保持可选面向实现成本合理、但对所有 profile 用户强制太重的特定应用

RVA23.1 新增三个开发选项与两个扩展选项。Canonical 点名了对 Ubuntu(以及所有通用发行版)最重要的三个:

扩展作用受益方
Ssdbltrap(双重陷入处理)覆盖一个狭窄但恶毒的角落:第一个陷入处理器尚处于不可重入状态时发生第二个陷入,可能导致系统崩溃与内存损坏。Ssdbltrap 让机器态或 Hypervisor 态安全接住第二个陷入内核/Hypervisor 健壮性——减少致命双重故障路径、降低内存损坏风险
Sscfg(S 态计数器委托)让 Supervisor(S 态)直接管理和配置性能计数器寄存器,不必绕道机器态固件。Linux perf——剖析开销的可测量下降
Ssctr(控制传输记录)在硬件中记录分支历史,大幅改善分支剖析——是 RISC-V 上PGO(Profile-Guided Optimization)的使能机制。编译器与剖析器;PGO 需要上游 Linux 内核通过 perf 暴露分支记录缓冲——补丁已存在但尚未被上游接受

注意 Ssctr 行里那条诚实的依赖链:扩展只是三脚凳的一条腿——硅片支持、内核管道(perf)、编译器/剖析器集成缺一不可,任何单项单独落地都买不到东西。这正是"开发选项"分级机制存在的意义。

工具链支持小结

分组Canonical 给出的工具链状态
CFIGCC 与 LLVM 今天已支持
矩阵两条路:编译器 intrinsics(类汇编,现在就能用)vs 让编译器自动生成矩阵指令(更难)。VME 相对简单;AME 工作量大。批准期间存在树外厂商工作(玄铁私有 GCC 分支)。
RVA23.1部分特性通过 intrinsics 或 CSR 汇编访问而非代码生成;Ssctr 这类扩展直接对接编译器剖析器

对建设者意味着什么

结论

Canonical 的文章难得地没有炒作:RVA23 稳坐公共平台,向后兼容由构造保证,有趣的工作在三条清晰分离的轨道上推进——安全上的 CFI、AI 上的三条矩阵路线、稳定性上的分级小版本。对工程团队的实际启示是:软件可以先动——CFI 工具链今天就有,hwprobe 分发是今天就能用的 UAPI,而开发选项机制存在的意义,正是让今天的可选工作在不破坏任何人二进制的前提下成为明天的强制基线。

Резюме (RU)

Jon Taylor (Canonical) в статье в блоге Ubuntu (15 сентября 2026 г.) описывает развитие RISC-V ISA после RVA23 по трём направлениям. CFI (ратифицирован в 2024 г.): два независимых расширения — Zicfilp (landing pad: косвенный переход мимо посадочной площадки вызывает trap) и Zicfiss (теневой стек: адрес возврата хранится в двух стеках, несовпадение при возврате вызывает trap). На оборудовании RVA23 без реализации инструкции игнорируются; на pre-RVA23 без Zimop инструкции Zicfiss вызывают trap. GCC и LLVM поддерживают CFI уже сегодня. Матричные расширения: VME (состояние как у стандартного вектора — изменений ОС не требуется), IME (расширяет векторный регистровый файл + дополнительные регистры результата — нужны изменения ОС), AME (полностью новый регистровый файл — нужны изменения ОС, много работы). Обнаружение в рантайме — через sys_riscv_hwprobe(). RVA23.1: три development-опции и две expansion-опции; ключевые для дистрибутивов — Ssdbltrap (двойная ловушка), Sscfg (делегирование счётчиков в S-режим, ускоряет perf), Ssctr (записи передачи управления для PGO; патчи ядра ещё не в апстриме). RVA23 остаётся базовой платформой, обратная совместимость сохраняется.

Resumen (ES)

Jon Taylor (Canonical) describe en el blog de Ubuntu (15 de septiembre de 2026) la evolución del ISA RISC-V tras RVA23 en tres frentes. CFI (ratificado en 2024): dos extensiones independientes — Zicfilp (landing pads: saltar a un punto que no sea landing pad provoca trap) y Zicfiss (shadow stack: la dirección de retorno se guarda en dos pilas y una discrepancia provoca trap). En hardware RVA23 sin implementación las instrucciones se ignoran; en pre-RVA23 sin Zimop, las de Zicfiss provocan trap. GCC y LLVM ya soportan CFI. Extensiones de matriz: VME (mismo estado que el vector estándar — sin cambios en el SO), IME (extiende el banco de registros vectorial + registros de resultado adicionales — requiere cambios en el SO), AME (banco de registros completamente nuevo — requiere cambios en el SO, mucho trabajo). Descubrimiento en tiempo de ejecución vía sys_riscv_hwprobe(). RVA23.1: tres development options y dos expansion options; las relevantes para distros son Ssdbltrap (doble trap), Sscfg (delegación de contadores al modo supervisor, mejora perf) y Ssctr (registros de transferencia de control para PGO; los parches del kernel aún no están en upstream). RVA23 sigue siendo la base y la compatibilidad hacia atrás se mantiene.

Résumé (FR)

Jon Taylor (Canonical) décrit sur le blog Ubuntu (15 septembre 2026) l'évolution de l'ISA RISC-V après RVA23 selon trois axes. CFI (ratifié en 2024) : deux extensions indépendantes — Zicfilp (landing pads : un branchement vers un point autre qu'un landing pad déclenche un trap) et Zicfiss (shadow stack : l'adresse de retour est stockée dans deux piles, toute divergence déclenche un trap). Sur du matériel RVA23 sans implémentation, les instructions sont ignorées ; sur du pre-RVA23 sans Zimop, celles de Zicfiss déclenchent un trap. GCC et LLVM prennent déjà en charge CFI. Extensions matricielles : VME (état identique au vecteur standard — aucun changement OS), IME (étend le fichier de registres vectoriel + registres de résultats supplémentaires — modifications OS requises), AME (fichier de registres entièrement nouveau — modifications OS requises, beaucoup de travail). Découverte à l'exécution via sys_riscv_hwprobe(). RVA23.1 : trois development options et deux expansion options ; les plus pertinentes pour les distros : Ssdbltrap (double trap), Sscfg (délégation des compteurs au mode supervisor, accélère perf), Ssctr (control transfer records pour le PGO ; les patchs du noyau ne sont pas encore acceptés en amont). RVA23 reste la plateforme de base et la compatibilité descendante est préservée.

Zusammenfassung (DE)

Jon Taylor (Canonical) beschreibt im Ubuntu-Blog (15. September 2026) die Entwicklung der RISC-V-ISA nach RVA23 in drei Bereichen. CFI (2024 ratifiziert): zwei unabhängige Erweiterungen — Zicfilp (Landing Pads: ein Sprung zu einer Stelle, die kein Landing Pad ist, löst einen Trap aus) und Zicfiss (Shadow Stack: die Rücksprungadresse wird in zwei Stacks gespeichert; eine Diskrepanz löst einen Trap aus). Auf RVA23-Hardware ohne Implementierung werden die Instruktionen ignoriert; auf Pre-RVA23 ohne Zimop lösen Zicfiss-Instruktionen einen Trap aus. GCC und LLVM unterstützen CFI bereits heute. Matrix-Erweiterungen: VME (gleicher Zustand wie Standard-Vector — keine OS-Änderungen nötig), IME (erweitert das Vektor-Registerfile + zusätzliche Ergebnisregister — OS-Änderungen erforderlich), AME (völlig neues Registerfile — OS-Änderungen erforderlich, viel Arbeit). Laufzeiterkennung über sys_riscv_hwprobe(). RVA23.1: drei Development-Optionen und zwei Expansion-Optionen; für Distributionen relevant sind Ssdbltrap (Double Trap Handling), Sscfg (Supervisor Counter Delegation, beschleunigt perf) und Ssctr (Control Transfer Records für PGO; Kernel-Patches noch nicht im Upstream). RVA23 bleibt die Basisplattform, Abwärtskompatibilität bleibt erhalten.

خلاصه (FA)

جن تییلر (Canonical) در وبلاگ Ubuntu (15 سپتامبر 2026) تحول ISA ریسک‌وی پس از RVA23 را در سه جبهه ترسیم می‌کند. CFI (تصویب‌شده 2024): دو پسوند مستقل — Zicfilp (سواحل: پرش به نقطه‌ای غیر از landing pad موجب trap می‌شود) و Zicfiss (ستک سایه: آدرس برگشت در دو ستک ذخیره می‌شود، ناهمخوانی موجب trap می‌شود). در سخت‌افزار RVA23 بدون پیاده‌سازی، دستوران نادیده گرفته می‌شوند؏ در pre-RVA23 بدون Zimop موجب trap می‌شوند. GCC و LLVM امروز CFI را پشتیبانی می‌کنند. پسوند‌های ماتریسی: VME (وضعیت مشابه وکتور استاندارد — بدون تغییرات OS)، IME (توسعه رجیستر‌های وکتور + رجیستر‌های نتیجه افزودنی — تغییرات OS لازم است)، AME (رجیستر‌های کاملاً جدید — تغییرات OS لازم است، کار زیادی می‌برد). کشف در زمان اجرا با sys_riscv_hwprobe(). RVA23.1: سه development option و دو expansion optionؠ مهم‌ترین‌ها برای دیسترو‌ها: Ssdbltrap (مدیریت trap دوڊم)، Sscfg (برگردان شمارنده‌ها به سطح Supervisor، پرش perf را سریع می‌کند)، Ssctr (ثبت انتقال کنترل برای PGOؠ پاچ‌های هسته هنوز به upstream نرفته‌اند). RVA23 پایگاه می‌ماند و سازگاری با نسقه‌های قبلی حفظ می‌شود.

Sources / 参考来源

← Back to Tech Blog