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.outGlobal 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

管中窥豹


结束

ubuntu18.04安装并测试gem5模拟器相关推荐

  1. Ubuntu18.04中搭建事件相机模拟器rpg-esim环境

    Ubuntu18.04中搭建事件相机模拟器rpg-esim环境 esim 是 ETH 开发的一款的模拟事件相机工作原理的仿真器,其是基于ROS环境的,在安装esim环境之前,需要先安装ROS.在官方给 ...

  2. ubuntu18.04 安装qt5.12.8及环境配置的详细教程

    这篇文章主要介绍了ubuntu18.04 安装qt5.12.8及环境配置的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 环境 系统: ...

  3. Ubuntu18.04安装cuDNN和Tensorflow的正确姿势

    文章目录 Ubuntu18.04安装cuDNN和Tensorflow的正确姿势 一.检查NVIDIA驱动是否安装成功 二.检查CUDA是否安装成功 三.安装cuDNN 1. 确定版本 2. 下载安装包 ...

  4. Ubuntu18.04安装CUDA10.1和cuDNN v7.6.5

    Ubuntu18.04安装CUDA10.1和cuDNN v7.6.5 前言 深度学习需要使用使用GPU加速,在安装tensorflow之前需要根据选用的版本安装 就我的经验而言,CUDA的安装在Lin ...

  5. Ubuntu18.04安装OpenCV4.3.0和环境配置(支持编译CUDA并安装配置python-opencv)

    Ubuntu18.04安装OpenCV4.3.0和环境配置 下载源文件 安装依赖 编译安装 环境配置 动态库配置 配置OpenCV的`PKG-CONFIG`环境 Python-OpenCV环境[如果安 ...

  6. Ubuntu18.04安装python3.7.7和tensorflow-gpu 2.2.0

    Ubuntu18.04安装python3.7.7和tensorflow-gpu 2.2.0 前言 安装python3.7.7与环境变量设置 使用pip3安装tensorflow-gpu 2.2.0 测 ...

  7. Ubuntu18.04 安装搭建 hadoop-3.3.0 集群

    Ubuntu18.04 安装搭建 hadoop-3.3.0 集群 参考博文:https://blog.csdn.net/sunxiaoju/article/details/85222290?ops_r ...

  8. ubuntu18.04安装显卡驱动,Anaconda,CUDA,pytorch全套流程

    记录一次成功的装显卡,以为过程很复杂,其实这边封装的还挺好,正常走流程就没啥问题.我这边也是看各个步骤的博客总结,可以称之为搬运工. 1. 显卡驱动安装 参考的是这篇博客:Ubuntu18.04安装显 ...

  9. 西电 操作系统课设 在Ubuntu18.04安装pintos

    西电 操作系统课设 在Ubuntu18.04安装pintos 前言 1. 主要步骤 2. VMware的安装 3. Ubuntu18.04的安装和配置 4. Bochs的安装 4. Pintos安装 ...

最新文章

  1. 小程序登录、用户信息相关接口调整说明
  2. python使用matplotlib可视化棉签图、棉棒图(stem plot)、展示离散而有序的数据
  3. 10、ctemplate文档,简记(3)
  4. python入门教程2word-python操作word入门
  5. 死锁产生的原因及条件和手写死锁
  6. yum 安装mysql数据库
  7. 【AD】mm,mile,inch+电流大小同线宽关系
  8. 5.5.35 - mysql 同步_MySQL 5.6.35主从同步配置案例
  9. uni-app之实现分页
  10. SQL2005企业版详细部署(一)
  11. 大数据培训(第一季) java基础-徐培成-专题视频课程
  12. 在我的世界修改服务器吗 名字,我的世界怎么改名字
  13. codewars练习(javascript)-2021/2/17
  14. 处理ArchLinux上各软件屏幕卡顿与显示问题(chrome浏览器,微信开发者工具wxdt,vscode移动慢问题)
  15. 你还在用二分法求2个鸡蛋100层楼的问题吗?
  16. 怎么快速做动态图?gif动图在线怎么制作?
  17. Yii Zii组件 CGridView 使用详解
  18. 同元车辆模型库——TA系列
  19. ElasticSearch 的分数 (_score) 是怎么计算得出 (2.X 5.X)
  20. python打包的exe文件设置开机自启动和关闭开机自启动。

热门文章

  1. nocas集群部署配置与启动(Windows)
  2. iOS之UI--主流框架的搭建-- 仿制QQ的UI框架
  3. 最小生成树计数模板及原理
  4. GNOME 桌面安装 -- 阿里云 Ubuntu 16.04 安装图形界面
  5. Kotlin 开发Android app(四):Kotlin 四大容器Set,Array,List,Map
  6. 能否在BroadcastReceiver里创建AlertDialog并显示?
  7. Android 进度条自增长和渐变颜色
  8. 基于NetworkX构建复杂网络的应用案例
  9. c语言编程图像拼接,一种基于Lucas-Kanade算法的图像配准和拼接方法
  10. 微信小游戏开发技巧(大会演讲内容整理)丨掘金开发者大会