ubuntu18.04安装并测试gem5模拟器

156 篇文章 17 订阅

GEM5是一款十分强大的模拟器,支持主流的X86、MIPS、ARM、RISC-V等多种架构的行为仿真模拟。

GEM5是M5和GEMS的结合,使用Python和C++编写(其中C++占越85%),提供大量标准化接口的同时保留了较好的灵活性。

本文介绍GEM5在Ubuntu18.04下的编译安装过程。

开发环境

安装依赖:

sudo apt install build-essential git m4 scons zlib1g zlib1g-dev libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev python-dev python
pip3 install pydot

依赖简单介绍如下:

SCons:gem5使用SCons作为它的构建环境。SCons类似于make,它将Python脚本用于构建过程的所有方面。这使得构建系统非常灵活(尽管速度较慢)。

protobuf 2.1+:协议缓冲区是一种语言无关、平台无关的可扩展机制,用于序列化结构化数据。在gem5中,protobuf库用于跟踪生成和回放。如果您没有计划将protobuf用于跟踪生成和回放,那么它就不是必需的包。

Boost:Boost库是一组通用c++库。如果需要使用SystemC实现的程序,那么它是一个必要的依赖项。这个库所占空间较大。

获取GEM5源码:

GITHUB被强,所以换GITEE作源:

git clone https://gitee.com/gao_hanyuan/gem5.git

担心版本的问题,避免夜长梦多,直接选择一个TAG版本编译,我选择的是v21.2.1.0

编译:

不知道处于什么原因,SCONS无法识别anaconda环境的python,在顶层目录直接执行Scons会报告如下错误:Error: Can't find a working Python installation

所以退出anaconda环境,执行

conda deactivate

退出anaconda,之后在GEM5顶层目录直接执行

scons

 进行编译,如下是编译过程:

如果不加多线程编译,大概编译一个小时左右,编译完成,结果为gem5.debug。

测试

编写helloworld.c文件,并用arm-linux编译

最好使用静态编译

arm-linux-gnueabi-gcc -static main.c

之后,执行如下命令测试:

./build/ARM/gem5.debug configs/example/se.py -c  ./a.out

可以看到,结果准确输出出来:

编译X86架构的仿真器

python3 `which scons` build/X86/gem5.opt -j8

编译RISCV版本的仿真器

python3 `which scons` build/RISCV/gem5.opt -j9

平头哥芯片开放社区(OCC)

编译MIPS版本的仿真器

python3 `which scons` build/MIPS/gem5.opt -j8

GEM5只支持小端结构:

SPARC

python3 `which scons` build/SPARC/gem5.opt -j8

POWER

python3 `which scons` build/POWER/gem5.opt -j8

GEM5的调试

gdb --args ./build/ARM/gem5.opt configs/example/se.py -c ./a.out

GEM5支持的架构

支持的架构包括 amdgpu,arm,mips,power,riscv,sparc,x86.

其它调试调优:

调试指令:

./build/ARM/gem5.debug --debug-flags=Exec configs/example/se.py -c ./a.out

可以看到,指令的操作类型IntAlu,MemRead,MemWrite被完整记录下来。

参考记录:

参考资料

gem5: Building gem5

python3 `which scons` build/X86/gem5.opt -j9
caozilong@caozilong-Vostro-3268:~/Workspace/gem5$ ./build/X86/gem5.opt configs/example/se.py -c ./a.out 
gem5 Simulator System.  http://gem5.org
gem5 is copyrighted software; use the --copyright option for details.

gem5 version 21.2.1.0
gem5 compiled Oct  1 2022 21:53:41
gem5 started Oct  1 2022 22:57:41
gem5 executing on caozilong-Vostro-3268, pid 10597
command line: ./build/X86/gem5.opt configs/example/se.py -c ./a.out

Global frequency set at 1000000000000 ticks per second
build/X86/mem/mem_interface.cc:793: warn: DRAM device capacity (8192 Mbytes) does not match the address range assigned (512 Mbytes)
0: system.remote_gdb: listening for remote gdb on port 7002
**** REAL SIMULATION ****
build/X86/sim/simulate.cc:194: info: Entering event queue @ 0.  Starting simulation...
build/X86/sim/syscall_emul.cc:74: warn: ignoring syscall mprotect(...)
build/X86/sim/syscall_emul.cc:74: warn: ignoring syscall mprotect(...)
build/X86/sim/syscall_emul.cc:74: warn: ignoring syscall mprotect(...)
build/X86/sim/syscall_emul.cc:74: warn: ignoring syscall mprotect(...)
main line 5, helloworld.
Exiting @ tick 156499500 because exiting with last active thread context
caozilong@caozilong-Vostro-3268:~/Workspace/gem5$ 

gem5运行coremark

./build/X86/gem5.opt configs/example/se.py -c ~/Workspace/coremark/coremark/coremark.exe

其它模拟器比如multi2sim可以从如下地址下载:

https://github.com/Multi2Sim/multi2sim

管中窥豹


结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值