组别:CICC3327
背景:
经过数周的前期准备与研读代码,我们组终于正式开始对浮点指令进行扩展并不出意外地遇到了一些小问题,本篇文章针对这些问题作出解决方法的分享。
在e203_exu_decode中,发现变量leg1_ops用于标识各种类型的运算指令,而我们由于没有加上浮点指令,所以在浮点进入后,此处变量leg1_ops为0,导致后续指令执行出错。
而加上float_op后再进行仿真就会解决此问题
在使用fcvt.s.w指令进行测试时,预期结果并没有在float_o_fcvt中出现。原因是浮点运算模块中的复位信号是1为有效,但在蜂鸟中复位信号是0,导致浮点运算模块一直被复位,所以无法计算
还有一个问题在写回模块,因为蜂鸟模块对0、1号等寄存器进行了相应的保护机制,而我们用的指令功能恰好是写入0号浮点寄存器,所以出现无法写的情况。
结论
以上就是我们组在扩展浮点指令中出现的一些问题,这些问题总体上归结于对蜂鸟的代码没有整体性的把握,对内容的掌握程度还不够。在后续的工作中应注意理清功能的整体架构而对所有的相关部分进行修改。