为已批准的 RISC-V ISA 扩展 Zilsd(Load/Store pair)和 Zclsd(Compressed Load/Store pair)添加内核支持,使用户空间(如 glibc)能够通过 hwprobe 和运行时检测机制发现并使用这些扩展。
Zilsd 和 Zclsd 是 RISC-V 指令集架构的两个扩展,用于优化内存访问效率。
Zilsd(Load/Store Doubleword)
Zilsd 扩展在 RV64 架构下引入了一对新的整数加载和存储指令,用于一次性操作两个 32 位寄存器(即一个 64 位双字)。标准 RISC-V 的 ld 和 sd 指令只能访问单个 64 位寄存器,而 Zilsd 提供的指令可以同时加载或存储两个连续的 32 位值到一对寄存器中。这在需要处理成对数据(例如复数、坐标点、或者某些结构体字段)时,能减少指令数量并提高数据吞吐量。该扩展仅在 64 位 RISC-V(RV64)上有效,32 位架构不支持。
Zclsd(Compressed Load/Store Doubleword)
Zclsd 是 Zilsd 的压缩版本,属于 RISC-V 的压缩指令集(C 扩展)家族。它依赖两个前提:一是必须已经实现了 Zilsd 扩展,二是必须实现了 Zca 扩展(压缩指令的基础子集,提供 16 位编码的常用整数指令)。Zclsd 将 Zilsd 的加载和存储指令编码为 16 位格式,而不是标准的 32 位格式,从而进一步节省代码体积。这对于嵌入式系统、缓存容量受限的场景,或者任何对代码密度敏感的应用程序都非常有价值,因为它在保持双字访问能力的同时,减少了指令缓存的压力。
合入的补丁列表
4115155 dt-bindings: riscv: add Zilsd and Zclsd extension descriptions
3f0cbfb riscv: add ISA extension parsing for Zilsd and
6118ebe riscv: hwprobe: export Zilsd and Zclsd ISA extensions
f326e84 riscv: KVM: allow Zilsd and Zclsd extensions for Guest/VM
ab2a7b7 KVM: riscv: selftests: add Zilsd and Zclsd extension to get-reg-list test
为已批准的 RISC-V ISA 扩展 Zilsd(Load/Store pair)和 Zclsd(Compressed Load/Store pair)添加内核支持,使用户空间(如 glibc)能够通过 hwprobe 和运行时检测机制发现并使用这些扩展。
Zilsd 和 Zclsd 是 RISC-V 指令集架构的两个扩展,用于优化内存访问效率。
Zilsd(Load/Store Doubleword)
Zilsd 扩展在 RV64 架构下引入了一对新的整数加载和存储指令,用于一次性操作两个 32 位寄存器(即一个 64 位双字)。标准 RISC-V 的 ld 和 sd 指令只能访问单个 64 位寄存器,而 Zilsd 提供的指令可以同时加载或存储两个连续的 32 位值到一对寄存器中。这在需要处理成对数据(例如复数、坐标点、或者某些结构体字段)时,能减少指令数量并提高数据吞吐量。该扩展仅在 64 位 RISC-V(RV64)上有效,32 位架构不支持。
Zclsd(Compressed Load/Store Doubleword)
Zclsd 是 Zilsd 的压缩版本,属于 RISC-V 的压缩指令集(C 扩展)家族。它依赖两个前提:一是必须已经实现了 Zilsd 扩展,二是必须实现了 Zca 扩展(压缩指令的基础子集,提供 16 位编码的常用整数指令)。Zclsd 将 Zilsd 的加载和存储指令编码为 16 位格式,而不是标准的 32 位格式,从而进一步节省代码体积。这对于嵌入式系统、缓存容量受限的场景,或者任何对代码密度敏感的应用程序都非常有价值,因为它在保持双字访问能力的同时,减少了指令缓存的压力。
合入的补丁列表
4115155 dt-bindings: riscv: add Zilsd and Zclsd extension descriptions
3f0cbfb riscv: add ISA extension parsing for Zilsd and
6118ebe riscv: hwprobe: export Zilsd and Zclsd ISA extensions
f326e84 riscv: KVM: allow Zilsd and Zclsd extensions for Guest/VM
ab2a7b7 KVM: riscv: selftests: add Zilsd and Zclsd extension to get-reg-list test