[转载] RISC-V 指令集扩展-Zfinx 扩展(整数寄存器中的浮点)

RISC-V 指令集的一大优势是其可扩展性,用户可根据具体应用需求,选择合适的扩展指令集。

本章定义了 Zfinx 扩展(发音为 z-f-in-x)。该扩展提供了一系列指令,其功能与标准单精度浮点 F 扩展中的指令类似, 但操作对象为通用整数寄存器 x, 而非浮点寄存器 f。

本章还定义了 Zdinx、Zhinx 和 Zhinxmin 扩展,它们为其他浮点精度提供了类似的指令支持。

F 扩展采用独立的 f 寄存器进行浮点运算, 旨在减轻寄存器压力, 并简化对宽超标量处理器提供寄存器堆端口的设计。 然而, 引入的额外架构会增加最低实现成本。 Zfinx 扩展通过移除 f 寄存器, 显著降低了支持浮点指令集的简单 RISC-V 实现的成本,同时也减少了上下文切换的开销。
一般而言,假定 F 扩展存在的软件与假定 Zfinx 扩展存在的软件互不兼容。

Zfinx 扩展添加了 F 扩展添加的所有指令, 除了传输指令 FLW、 FSW、 FMV.W.X、 FMV.X.W、 C.FLW[SP]和 C.FSW[SP]。

这些 F 扩展指令的 Zfinx 变体具有相同的语义,只是当该指令本应访问 f 寄存器时,它改为访问具有相同编号的 x 寄存器。

Zfinx 扩展依赖于 Zicsr 扩展来访问控制状态寄存器。

https://mp.weixin.qq.com/s/AMqHczaDVp7nyoBwujqWbg

3 个赞