RISC-V MCU中文社区

【分享】 浮点扩展的fcsr

发表于 开源蜂鸟E203 2023-05-30 23:51:40
0
1510
1

队伍编号: CICC2071

添加浮点模块后,需要为处理器添加浮点状态寄存器。浮点寄存器记录了浮点和舍入模式,以及出现计算错误的异常。
fcsr寄存器可以用FRCSR和FSCSR指令读写,它们是构建在底层CSR访问指令之上的汇编伪指令。FRCSR通过将fcsr复制到整型寄存器rd来读取fcsr。fcsr通过将fcsr中的原始值复制到整型寄存器rd来交换fcsr中的值,然后将从整型寄存器rs1获得的新值写入fcsr。
risc-v官方的fcsr配置如下图所示:
图片alt
fcsr的第31-8位保留给其他标准扩展,包括十进制浮点数的“L”标准扩展。如果这些扩展不存在,实现将忽略对这些位的写入,并在读取时提供零值。标准软件应该保留这些字节的内容。
其中frm对应浮点的舍入模式,当指令中的rm值为111时,会读取该fcsr中的frm[7:5]值作为舍入模式。使用这种舍入方式一般称为动态舍入方式。即舍入方式可以通过软件方式更改fcsr值配置。
若指令中的rm值不为111则使用静态舍入模式,使用指令自带的舍入。
舍入模式关系图如下:
图片alt
fscr的低5bit提供了计算异常位分别对应5种异常,无效操作,除零,上溢,下溢,不精确
图片alt

喜欢1
用户评论
Jim

Jim 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板