目录
(1)简单地说scons build/X86/gem5.opt -j2在干啥
(4)gem5为什么需要先用scons构建一个模拟环境再使用build/X86/gem5.opt执行模拟脚本呢?
(8)gem5为什么需要构建一个模拟环境呢?有什么作用?可以类比为啥?
查了很多篇帖子,包括官网,对于scon在做啥只知道SCons利用SConstruct文件文件来查找和编译所有的Gem5源代码,执行完后生成一个gem5/build目录,得到相应的二进制文件。但你又不知道整个过程是在干啥,在查阅了n篇资料后,整理了一下自己的思路,记录如下:
一、Gem5构建模拟环境的具体过程
scons build/X86/gem5.opt -j2
改命令用于构建gem5的X86版本,并启用多线程构建。
该命令的运行过程可以分为以下几个步骤:
- 解析命令行参数
- 加载构建环境
- 加载构建规则
- 构建gem5
首先,gem5会解析命令行参数,并使用-j2选项启用多线程构建。然后,gem5会加载构建环境,并准备好构建环境中的构建工具。
接下来,gem5会加载构建规则,并使用构建规则来构建gem5。该过程会执行源代码的预处理、编译、链接等操作,并生成可执行文件build/X86/gem5.opt。
最后,gem5会构建完成,并退出构建过程。
(1)解析命令行参数
(2)加载构建环境
gem5加载构建环境的过程可以分为以下几个步骤:
- 检查构建环境
- 加载构建配置
- 加载构建脚本
首先,gem5会检查构建环境,包括检查构建工具的版本、依赖关系等。如果检查发现构建环境不正确,gem5会报告错误并退出构建过程。
接下来,gem5会加载构建配置,并将构建配置中的信息加载到构建环境中。构建配置中包含了构建过程中需要使用的信息,例如构建参数、构建目标、依赖关系等。
最后,gem5会加载构建脚本,并使用构建脚本中的构建规则来构建gem5。构建脚本中包含了构建过程中的具体操作,例如预处理、编译、链接等操作。
例如,可以使用以下命令来加载gem5的构建环境:
scons
该命令会检查构建环境,并加载构建配置和构建脚本。但是,该命令不会真正执行构建操作,只会准备好构建环境。如果要执行构建操作,需要在命令行中指定构建目标
(3)加载构建规则
gem5加载构建规则的过程可以分为以下几个步骤:
- 解析构建脚本
- 加载构建规则
- 加载构建目标
首先,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构建环境的过程如下:
- 使用scons工具读取gem5的脚本文件,并解析其中的指令。
- 执行脚本文件中的指令,完成模拟系统的构建和配置。
- 根据脚本文件中的指令,生成gem5的可执行文件。
- 运行gem5的可执行文件
gem5模拟环境构建与执行详解

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





