0

我们有一个应用程序使用现有的 memcpy 和未修改的 RISCV 编译器将 80MB 批量数据从一个内存位置复制到另一个内存位置。我们可以看到循环计数约为 900,这似乎是不正确的。如果我改变大小,计数或多或少保持不变。这显然是不正确的。问题是因为使用了 RISCV 编译器吗?我们使用的是 riscv64-unknown-elf。我们需要 riscv64-unknown-linux-gnu 吗?

4

1 回答 1

1

我进行了类似的性能测试,并将结果与​​ SPARC-V8 LEON3 处理器进行了比较,所以我得到了以下数据:

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

我使用了修改后的单核 Rocket 配置,禁用了 L2 缓存,并使用了自己的 NASTI 仲裁器实现来提供对 AXI 设备的 1 个时钟访问。使用默认配置,您很可能会得到更糟糕的结果。

我的 SoC 实现:https ://github.com/sergeykhbr/riscv_vhdl

于 2015-11-23T18:49:11.440 回答