gem5 system emulation 模式,内部实现了对system call的模拟,使用了一段时间后,有一些发现:
- 如果使用spec2017 X86编译,那么会存在对intel比较新的指令不支持的问题;后来使用gcc march K6 m32来解决,即使用amd的k6 32bit编译,但是这也只是权宜之计
- gem5的开发人员在邮件list中介绍intel对gem5的译码支持比较差,最开始gem5的x86也是基于amd的
- 很多论文中使用了ARM架构,gem5的开发人员也和ARM合作比较紧密,所以gem5对arm架构的指令支持比较好
- 即使使用上面的方法,se模式还是会遇到gem5没有模拟的system call函数的问题
- 同时还会遇到环境的问题,比如549.fotonik3d,需要手动将input输入的压缩文件OBJ.dat.xz手动解压之后才能运行
“”
因为上述的问题,在邮件list中可以看出gem5的开发人员比较倾向于使用full system模式,用他的话就是"works magically"。
X86 full system
如果使基于X86 Ubuntu系统模拟gem5 arch,制作disk image比较简单,可以git clone gem5 resource, 在spec2017文件夹下放入spec2017.iso,调用build.sh自动调用packer将spec2017装入ubuntu的disk image生成spec-2017。
./build/X86/gem5.fast --outdir=./m5out/ configs/example/gem5_library/x86-spec-cpu2017-benchmarks.py --image=path/spec-2017 --benchmark=505.mcf_r --size=ref --partition=1
这里需要强调的是,gem5中介绍了多次qemu-kvm, 但是qemu-kvm并不是在X86架构中生成disk image和真正运行gem5时必须的工具。
在gem5中引入它的主要作用就是在boot阶段使用qemu,在真实的cpu上运行boot 阶段,进行加速,实际上如果我们在云服务器上跑,如果没有qemu软件或者权限,只是使用atomic cpu跑boot也是比较快的。
就是不要被qemu迷惑,fullsystem gem5可以理解成在gem5上跑app,不过这个app是os,单纯的用atomic cpu跑也没有任何问题。
ARM full system
X86 full system的问题是memory最大支持3GB,目前看gem5的设置是不支持5GB 6GB这样的设置。
我们介绍一下如何生成gem5的disk image。
首先看一下最终成功运行full system 使用的指令:
./build/ARM/gem5.fast -d ./m5out/ARM/fullsystem64/spec2017 ./configs/example/fs.py \
--kernel 2022/binaries/vmlinux.arm64 \
--disk-image path/expanded-aarch64-ubuntu-trusty-headless.img

文章详细介绍了在gem5模拟器中使用systememulation模式时遇到的问题,包括X86架构对新指令的支持不足和特定benchmark的环境需求。作者提出使用gccmarchK6编译以解决部分问题,并讨论了gem5对ARM架构更好的支持。在fullsystem模式下,文章提供了X86和ARM的配置示例,强调了qemu-kvm在boot阶段的作用,以及如何创建和扩容diskimage以运行spec2017基准测试。此外,还介绍了利用script自动化运行benchmark的方法。
最低0.47元/天 解锁文章
4611

被折叠的 条评论
为什么被折叠?



