蜂鸟内核执行模块浮点指令运算数据的获取
组别:CICC3327
蜂鸟E203是一款极低功耗的RISC-V处理器核。该处理器核采用了现代化的32位指令集架构,并具有高性能、低功耗、可扩展性等优点。
本文接续上一篇文章中探讨的整型指令执行路径,进一步讲解浮点指令在内核中是如何获取所需的两个操作数。
我们以浮点加法运算为例。
首先,经过分析我们发现整型指令寄存器的例化是通过循环完成的,所以我们可以用相同的方式例化32个32位浮点寄存器,相关代码如下:
我们进入例化函数内部,发现例化后通过rf_r[i]进行输出。
在exu_regfile中,将不同索引的浮点寄存器值赋给read_src1_dat
然后在e203_exu文件中又将其与rf_rs1相接,将rf_rs1与disp_i_rs1相接,
这就相当于将一个浮点寄存器的值赋值给disp_i_rs1,将disp_i_rs1进行判断是否为0后(当然在浮点扩展中不需要)赋给disp_o_alu_rs1,然后将其通过一系列的接口与e203_exu_alu的i_rs1相接
然后与opcode进行与操作判断指令类型后将值赋给相应寄存器,此处是alu_i_rs1
最后根据opcode的解码得到运算所需的两个操作数。
通过上文介绍,我们大致理清了浮点运算中操作数的获取,接下来要进行的工作就是面对整数或浮点寄存器如何做判断以及如何实现具体的运算操作,待我们继续分析后,在后续的文章中进行相应介绍。