使用相同的编译选项,一个是RV32GC扩展,一个是RV64GC扩展,使用ZCC4.1.6版本,通过编译产生的dump文件查看,同一个函数为什么RV64GC扩展的指令数远大于RV32GC扩展的指令数.以core_bench_matrix函数为例,RV32GC扩展的指令数1700左右,RV64GC扩展的指令数2400左右
rv32和rv64的abi不一样,同时指令能处理的数据宽度也不一样,这些差异对优化会产生一些影响,因此产生的汇编指令数量会出现差异
这abi的差异有这么大吗?这样的结果会导致跑benchmark的性能更差呀,64bit的处理器会执行更多的指令。
你说的是从汇编文件看到的静态指令数的数量还是程序执行时的动态指令数的数量。动态指令数应该不会有太大差别。
实际执行的时候,32系统执行了20万条指令,64执行了25万条指令
是否可以提供一下rv32gc和rv64gc生成的elf程序,我们测试coremark在rv32gc和rv64gc下的动态指令数没有太大区别。
可以,论坛上好像不可以发送文件,邮箱已经发送