Gem5模拟器,scon和模拟脚本时具体在做啥?(一)

gem5模拟环境构建与执行详解
本文详细介绍了gem5模拟环境的构建过程,包括scons的使用、构建规则加载、模拟脚本运行等步骤。gem5通过scons工具构建不同版本的可执行文件,如gem5.opt,用于模拟实验。构建模拟环境后,使用gem5.opt执行配置脚本,进行模拟实验。gem5构建时指定指令集是为了适应不同架构,构建的模拟环境包含处理器模型、内存模型、I/O设备模型等,用于模拟真实计算机系统。

目录

一、Gem5构建模拟环境的具体过程

(1)解析命令行参数

(2)加载构建环境

(3)加载构建规则

(4)构建gem5

二、scons在干啥?

三、运行GEM5模拟脚本时在干啥?

四、傻白提问环节?

(1)简单地说scons build/X86/gem5.opt -j2在干啥

(2)使用SCons构建gem5可以比作什么?

(3)一个完整的gem5系统是指?

(4)gem5为什么需要先用scons构建一个模拟环境再使用build/X86/gem5.opt执行模拟脚本呢?

(5)scons的时候为什么要制定指令集呢?

(6)那目标架构的源代码是指啥呢?

(7)X86架构的编译器选项具体是指啥?

(8)gem5为什么需要构建一个模拟环境呢?有什么作用?可以类比为啥?

(9)构建的gem5模拟环境里有啥?

(10)什么时候需要rebuild gem5?

(11)gem5的源代码主要是啥?

(12)gem5的构建选项是指啥?可以举例吗?

五、总结


查了很多篇帖子,包括官网,对于scon在做啥只知道SCons利用SConstruct文件文件来查找和编译所有的Gem5源代码,执行完后生成一个gem5/build目录,得到相应的二进制文件。但你又不知道整个过程是在干啥,在查阅了n篇资料后,整理了一下自己的思路,记录如下:

一、Gem5构建模拟环境的具体过程

scons build/X86/gem5.opt -j2

改命令用于构建gem5的X86版本,并启用多线程构建。

该命令的运行过程可以分为以下几个步骤:

  1. 解析命令行参数
  2. 加载构建环境
  3. 加载构建规则
  4. 构建gem5

首先,gem5会解析命令行参数,并使用-j2选项启用多线程构建。然后,gem5会加载构建环境,并准备好构建环境中的构建工具。

接下来,gem5会加载构建规则,并使用构建规则来构建gem5。该过程会执行源代码的预处理、编译、链接等操作,并生成可执行文件build/X86/gem5.opt。

最后,gem5会构建完成,并退出构建过程。

(1)解析命令行参数

(2)加载构建环境

gem5加载构建环境的过程可以分为以下几个步骤:

  1. 检查构建环境
  2. 加载构建配置
  3. 加载构建脚本

首先,gem5会检查构建环境,包括检查构建工具的版本、依赖关系等。如果检查发现构建环境不正确,gem5会报告错误并退出构建过程。

接下来,gem5会加载构建配置,并将构建配置中的信息加载到构建环境中。构建配置中包含了构建过程中需要使用的信息,例如构建参数、构建目标、依赖关系等。

最后,gem5会加载构建脚本,并使用构建脚本中的构建规则来构建gem5。构建脚本中包含了构建过程中的具体操作,例如预处理、编译、链接等操作。

例如,可以使用以下命令来加载gem5的构建环境:

scons

该命令会检查构建环境,并加载构建配置和构建脚本。但是,该命令不会真正执行构建操作,只会准备好构建环境。如果要执行构建操作,需要在命令行中指定构建目标

(3)加载构建规则

gem5加载构建规则的过程可以分为以下几个步骤:

  1. 解析构建脚本
  2. 加载构建规则
  3. 加载构建目标

首先,gem5会解析构建脚本,并将构建脚本中的信息加载到构建环境中。构建脚本中包含了构建过程中需要使用的信息,例如构建参数、构建目标、依赖关系等。

接下来,gem5会加载构建规则,并使用构建规则来构建gem5。构建规则中包含了构建过程中的具体操作,例如预处理、编译、链接等操作

最后,gem5会加载构建目标。构建目标指定了gem5最终需要生成的文件,例如可执行文件(比如:gem5.debug, gem5.opt, gem5.fast, gem5.prof and gem5.perf,gem5.opt项指明了要构建的gem5的二进制文件,申明了所要用到的编译器标志集)、静态库、动态库等。

例如,可以使用以下命令来加载gem5的构建规则:

scons

该命令会解析构建脚本,并加载构建规则和构建目标。但是,该命令不会真正执行构建操作,只会准备好构建环境。如果要执行构建操作,需要在命令行中指定构建目标。

关于gem5.debug, gem5.opt, gem5.fast, gem5.prof and gem5.perf的特点:

  • gem5.debug 关闭了优化。保证变量不会被优化掉,功能不会被意料外的内联(inlined),以及控制流行为正常。该版本与gdb类的工具合作良好,然而关闭优化会造成该版本明显慢于其它版本。当使用gdb或valgrind等工具并且不希望任何细节被模糊掉时应该选择该版本,否则建议选择其它版本。包含多种debug标志,在开发以及测试阶段使用,模拟速度慢。
  • gem5.opt 打开程序优化的同时保留了部分debug标志(例如,断言和DPRINTFs)。可以在试验阶段通过debug标志监控系统组件状态,模拟速度比debug类型得二进制要快。即该版本良好地平衡了模拟速度与调试观察,是所有环境中最优的版本。
  • gem5.fast 打开优化并关闭调试部分。编译优化程度最高,没有debug标志,最优的模拟速度,代价是不能进行运行时错误检查与调试输出。一般完成功能验证后,使用该二进制文件进行模拟实验。如果确信所有功能可以正确运行并想要获得峰值性能,建议使用该版本。
  • gem5.prof 类似于gem5.fast,但仍然保留了一些功能(instrumentation)可以用于gprof分析工具。该版本不常用,但可以用于找出gem5中应当被注意的部分以提升性能。不常用。
  • gem5.perf 同gem5.prof,但是instrumentation使用google perftools,允许被google-pprof分析。该分析版本是gem5.prof的补充,可能可以在所有基于Linux的系统中替换gem5.prof。不常用。

(4)构建gem5

在加载构建目标后,执行构建操作。

二、scons在干啥?

总的来说,scons是一款开源的构建工具,它可以在后台自动化整个构建过程,提高构建效率。在gem5中,scons工具用于构建gem5的可执行文件,其中,build/X86/gem5.opt指定了构建的目标文件的位置和名称。gem5.opt是gem5的可执行文件,它包含了gem5的所有模块和功能。通过运行gem5.opt,可以启动gem5的模拟环境,并进行模拟实验。

scon构建环境的过程如下:

  1. 使用scons工具读取gem5的脚本文件,并解析其中的指令。
  2. 执行脚本文件中的指令,完成模拟系统的构建和配置。
  3. 根据脚本文件中的指令,生成gem5的可执行文件。
  4. 运行gem5的可执行文件

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值