2015-11-06 32 views
0

我们有一个应用程序使用现有的memcpy和未修改的RISCV编译器将80MB大容量数据从一个内存位置复制到其他位置。我们可以看到循环数是〜900,这看起来不正确。如果我改变尺寸,计数或多或少保持不变。 这显然不正确。由于使用了RISCV编译器,问题是否存在?我们正在使用riscv64-unknown-elf。我们需要riscv64-unknown-linux-gnu吗?性能“memcpy”不正确

+0

什么是你的RISC-V的模拟器?你怎么能得到900个周期?你能发布测试和汇编代码的源代码吗? – osgx

回答

1

我已经取得了类似的性能试验,并与在SPARC-V8 LEON3处理器的结果,所以我有如下的数据:

  • 复制8 KB(千字节)的块
  • LEON3:11780个时钟周期。
  • Rocket:14630个时钟周期。

我已经使用修改过的单核Rocket配置和禁用的L2缓存,并使用NASTI仲裁器的自身实现来提供1个时钟访问AXI设备。使用默认配置最有可能会导致更糟糕的结果。

我的SoC implementaiton:https://github.com/sergeykhbr/riscv_vhdl