回复 2# xinkai132
2)写x5和读x5寄存器存在写后读冲突,是不是需要stall几拍?
我试了如下两种命令组合:
1. 400012b7
0002a023
00010001 (NOP)
00010001 (NOP)
00010001 (NOP)
……
00010001 (NOP)
00010001 (NOP)
00010001 (NOP)
……
0002a023
两种组合都能正常结束(接口上可以看到store的操作),可见应该不是读写冲突的问题。如果一个CPU还要软件来stall几拍来避免读写冲突,那这个CPU做的够差的,O(∩_∩)O~。
3)不负责任的想法:
如果将sw指令的rs1和rs2换个位置
这样就执行将4f000000写入Mem[0]空间了
第二条指令改成00502023试试?
我试过之后发现可以正常结束,只不过从CPU的接口上什么也看不到,因为按照SiFive E34 Core Complex Manual v1p1.pdf的描述:
0是个特殊的地址。如果不深入到RTL内部去看的话是看不到执行了哪些操作。
|