gem5 CPU模型之间的区别是什么?对于我的仿真而言,哪种模型更准确?

时间:2019-10-25 07:41:53

标签: gem5

在gem5中运行仿真时,我可以使用fs.py --cpu-type选择一个CPU。

如果我使用无效的CPU类型,例如fs.py --cpu-type,则此选项还可以显示所有CPU类型的列表。

这些CPU类型之间有什么区别,我应该为实验选择哪种类型?

https://www.mail-archive.com/gem5-users@gem5.org/msg16976.html启发的问题

1 个答案:

答案 0 :(得分:1)

有关CPU类型的概述,请访问:https://cirosantilli.com/linux-kernel-module-cheat/#gem5-cpu-types

总结:

  • 简化的CPU(源自BaseSimpleCPU):例如AtomicSimpleCPU(默认值)。它们没有CPU流水线,因此完全不现实。但是,它们的运行速度也快得多。因此,它们对于快速启动Linux然后检查点并切换到更详细的CPU很有用。

    一种替代方法是,如果主机和来宾ISA相同,则使用KVM CPUs来加快启动速度,尽管从2019年开始,KVM的稳定性较差,因为它更难以实现和调试。

  • 顺序CPU:通过参数化从通用MinorCPU派生,Minor代表顺序:

    • 对于ARM:HPI由ARM制造,并为“(2017)现代有序Armv8-A实现”建模。这是您最好的有序ARM下注。
  • 通过参数化从通用DerivO3CPU派生出来的
  • 乱序CPU,O3代表乱序:

    • 对于ARM:截至2019年,ARM尚未专门发布任何模型。唯一可用的特定O3模型是A15的ex5_big,但您必须验证其作者对真实模型的建模程度的主张。核心A15核心。

如果这些方法都不足够满足您的目的,则可以尝试通过像MinorCPU一样设置DerivO3CPU / HPI来建立自己的有序/无序模型。和ex5_big可以做到,尽管这可能很难解决,因为在没有实验或逆向工程的情况下,非自由CPU上通常没有足够的公共信息来做到这一点。