【问题标题】:Performance "memcpy" incorrect性能“memcpy”不正确
【发布时间】:2015-11-06 00:41:59
【问题描述】:

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

【问题讨论】:

  • 你的RISC-V模拟器是什么?你怎么能得到900个周期?能贴出测试和汇编代码的源代码吗?
  • 您在测量周期时可能有一些错误。

标签: riscv


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 2011-05-14
    • 1970-01-01
    • 2017-12-11
    相关资源
    最近更新 更多