【问题标题】:How to model a CPU using qemu?如何使用 qemu 对 CPU 建模?
【发布时间】:2013-07-03 13:54:28
【问题描述】:

我需要向多核 x86-64 处理器添加一些硬件并使用仿真对其进行测试,因此我正在考虑使用 QEMU。但我想知道在 qemu 中建模 CPU 的总体思路。任何关于这方面的好文件都会很棒。如果太难做,我可能会考虑只使用 PIN 工具进行简单的模拟。

另外,是否可以使用 QEMU 对非常规硬件进行建模,例如处理器不同内核之间的一些共享寄存器?当前实现的模型是否正确模拟了缓存访问之类的东西? qemu 模拟器是否精确测量模拟经过的时间?

【问题讨论】:

标签: c x86-64 multicore qemu


【解决方案1】:

这里有很多问题。当您说“添加一些硬件”时,您是什么意思?协处理器还是一些额外的外围设备?

QEMU 是一款通用翻译器,其前端可将各种架构转换为其常见的 TCG 操作格式,然后可以为各种主机架构生成代码。它被设计为快速且语义准确(即指令的行为应该与真实硬件上的行为一样)。但是,它并非旨在模拟微架构,因此缓存建模之类的事情超出了它的范围。虽然 -icount 模式在翻译期间提供确定性时间,但它与实际处理器执行指令所需的时间没有任何关系。

如果您想对小型功能内核进行建模和试验,那么 PIN 可能是更好的工具。

【讨论】:

  • 对不起,我很感兴趣。如果我可能陷入困境,QEMU 如何处理影响缓存的指令?我知道 PowerPC 有指示向缓存中放置关于下一步加载什么的提示。我认为 QEMU 的一种选择是简单地忽略此类操作码,而在仿真上运行的任何东西都不是更明智的选择。非常感谢!
  • 因为我们不对缓存建模,所以它们通常是 nop。通常这些指令还有其他效果,例如刷新缓存的地址转换,在这种情况下,我们将刷新 softmmu 缓存(不要将它与客户 mmu 混淆 - 这是 QEMU 的内部概念)。
  • 啊,太好了,非常感谢 :-) 我认为您是 QEMU 项目的一部分是正确的吗?也感谢您在那里的努力:-)
猜你喜欢
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 2016-12-14
  • 1970-01-01
相关资源
最近更新 更多