【问题标题】:Disable the cache of Leon3 microprocessor禁用 Leon3 微处理器的缓存
【发布时间】:2017-12-12 15:07:23
【问题描述】:

出于个人研究,我想比较两个微处理器的性能: 英特尔 8051 和 Sparc Leon3。为了评估这些,通过 ISS(指令集模拟器)执行一组具有代表性的功能。然后,我收集统计数据,并对从模拟中得出的数据进行简单推理。

由于我用作参考的 8051 微控制器的内核既没有外部存储器也没有缓存,我想禁用 Leon3 上的指令缓存和数据缓存,以获得与第一个可比较的数据.

我正在使用 TSIM 来模拟 Leon 3。我在数据表上读到它使用控制寄存器来设置缓存的行为。因此,我在基准测试中使用的函数中添加了一条内联汇编指令,该指令写入该寄存器并将缓存设置为禁用。我确定寄存器中的位已更改,但是当我进行模拟时,我看到缓存已写入。我可以看到这一点,因为我可以告诉模拟器的命令。

我是来问你是否可以帮助解决这个问题,或者你有一些想法,因为我被困住了。

【问题讨论】:

  • 我不太明白其中一位竞争者证明了什么,而经典的 8051 MCU确实具有外部存储器总线(而现代实现通常具有有限的 FLASH 缓存) .一般来说,SPARC 擅长处理复杂且计算量大的工作负载以及作为高级语言目标,而现代 8051 的优势在于低功耗和低延迟应用以及低门数(如大小/区域)。但实际上,它们针对的是不同的市场,不太可能在实际应用中出现两个竞争选择。
  • 什么样的模拟器会给你循环准确的结果?这是一个 rtl (verilog/vhdl) 工具吗?我也不明白这个练习的意义,一些大型高端处理器(不是单片机)与经典单片机,就像半卡车与皮卡车一样,各有利弊,但无法真正将它们相互比较任何形式的竞争。
  • 这可能更像是一个模拟器问题而不是处理器问题。如果在引导程序中您只是不启动主代码并停留在循环中或进行一些内存访问,那么模拟缓存是否正在被访问?如果是这样,那么模拟器可能与现实相去甚远,无法用于任何类型的性能测量任务。
  • " 他们针对不同的市场,不太可能在实际应用中出现两个竞争选择。" 在我看来,这是一件有趣的事情。考虑到市场,我可以比较哪些微处理器?我有兴趣了解有关 8051 和 Leon3 市场的更多信息。你有任何来源吗?另外,如果您有关于微处理器及其市场的资料,我会很高兴,这样我就可以深入思考这个选择。我认为对于必须在设计早期阶段选择微处理器的嵌入式系统设计人员来说,这是一项有用的研究。
  • 既然缓存是使其更快的架构差异之一,为什么禁用它会使测试“具有可比性”。您也可以询问如何或禁用数据总线的高 24 位以使其像 8051 一样成为 8 位。您要比较的是 Trabant 和 Ferrari。 Leon3 具有 1.4 MIPS/MHz,而 现代 8051 为

标签: assembly embedded cpu-cache sparc


【解决方案1】:

我没有使用 TSIM,但我使用以下代码测试了实际的 leon3 硬件。

它可能不是你想要的,但我希望你可以将你的代码与我的代码进行比较,以至少正确禁用缓存:)

I_cache_disable() {
  asm(" set 0x0c, %g1;");
  asm(" sta %g1, [%g0] 2 ");
}

D_cache_disable() {
  asm(" set 0x03, %g1");
  asm(" sta %g0, [%g0] 2 ");
}

我希望这段代码能有所帮助

【讨论】:

  • 这在不告诉编译器的情况下破坏了一些%g 寄存器,如果你想确保编译器不会选择用周围重新排序它们,两条指令也需要在同一个语句中在asm 语句之间编码并发出使用或依赖这些寄存器的指令。
猜你喜欢
  • 2010-09-09
  • 2021-10-13
  • 2013-02-13
  • 1970-01-01
  • 1970-01-01
  • 2014-10-09
  • 2016-10-17
  • 2020-09-25
  • 1970-01-01
相关资源
最近更新 更多