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

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

目录

一、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的可执行文件

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

假设现在我们已经创建了一个简单的模拟脚本(即simple.py),我们可以运行Gem5了。Gem5可以接受许多参数,但只需要一个位置参数,即模拟脚本。因此,我们可以简单地从根Gem5目录运行Gem5,如下所示:

build/X86/gem5.opt configs/learning_gem5/part2/run_hello.py

build/X86/gem5.opt configs/learning_gem5/part2/run_hello.py命令用于构建和运行gem5模拟环境,并使用configs/learning_gem5/part2/run_hello.py配置脚本

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

  1. 解析命令行参数
  2. 加载配置脚本
  3. 创建模拟对象
  4. 创建模拟系统
  5. 配置模拟参数
  6. 启动模拟

首先,gem5会解析命令行参数,并使用build/X86/gem5.opt可执行文件启动gem5模拟环境。然后,gem5会加载configs/learning_gem5/part2/run_hello.py配置脚本,并根据配置脚本中的信息创建模拟对象、模拟系统和模拟参数。

具体来说,gem5会创建模拟对象,并利用模拟对象的信息创建模拟系统。同时,gem5会根据配置脚本中的信息配置模拟参数,以满足模拟需求。

最后,gem5会启动模拟环境,并根据模拟参数的设定执行模拟。模拟过程中,gem5会按照模拟时钟的周期执行模拟,直到模拟结束。

模拟对象的构建是指创建和配置gem5模拟环境中的模拟对象。模拟对象是指在模拟环境中模拟真实世界中的实体。gem5支持多种不同类型的模拟对象,比如处理器、存储器、总线和设备等。创建模拟对象的过程需要使用gem5的脚本文件,该脚本文件包含了用于创建模拟对象的指令。

模拟系统的构建是指将模拟对象组装成完整的模拟系统。模拟系统包括多个模拟对象,它们之间通过虚拟的总线和设备连接在一起,构成了一个完整的模拟环境。创建模拟系统的过程也需要使用gem5的脚本文件,该脚本文件包含了用于配置模拟系统的指令。

总之,gem5模拟环境的构建包括模拟对象的创建和模拟系统的配置两个部分。两个部分都需要使用gem5的脚本文件来完成。

更具体的介绍,可以参看我的其它关于Gem5的介绍!!

Gem5模拟器,详解官网教程Creating a very simple SimObject(一)

四、傻白提问环节?


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

scons是一种用于构建软件的命令行工具,它通过读取SConstruct文件来解析和执行构建命令。在这个例子中,scons命令表示要使用SCons构建gem5,并且构建的目标是X86架构下的优化版gem5(即gem5.opt)。-j2参数表示要使用两个并行线程来执行构建。因此,整个命令的含义是:使用两个并行线程来构建X86架构下的gem5.opt

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

使用SCons来构建gem5可以比作用一个机器人来组装一个复杂的玩具。比如,gem5可以看作是一个玩具,它由许多不同的部件组成,比如电路板、传感器和电机。而SCons则是一个机器人,它能够读取SConstruct文件,按照文件中的指示进行操作,将gem5的各个部件组装起来,最终得到一个完整的gem5系统

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

gem5是一个高性能计算机模拟器,它能够模拟多种不同类型的计算机系统。因此,一个完整的gem5系统包括了模拟器的核心模块,以及模拟器所支持的各种计算机系统的模型。一个完整的gem5系统能够用来进行计算机系统建模和仿真,并且能够提供许多有用的性能指标来分析模拟的计算机系统的行为。

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

gem5是一个由许多不同的模块组成的复杂软件系统,它需要在构建过程中将这些模块组合在一起,并且需要根据用户的需求来决定构建哪些模块。因此,需要使用SCons来进行构建,它能够根据SConstruct文件中的指示来进行编译、链接和安装,最终得到一个完整的gem5系统。

在构建完成后,可以使用build/X86/gem5.opt来执行模拟脚本。gem5.opt是gem5的优化版本,它能够提供更高的性能,更快地进行仿真。因此,构建完整的gem5系统是为了能够使用gem5.opt来进行仿真,而不是直接使用gem5.opt来构建gem5系统。

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

构建软件时,需要根据目标架构来编译源代码,以便在目标架构下运行软件。因此,使用SCons构建gem5时,需要指定指令集,以便让SCons在编译源代码时使用正确的编译器选项,并且生成能够在指定架构下运行的代码。例如,在这个例子中,指定的指令集是X86,因此SCons会使用X86架构的编译器选项来编译gem5的源代码,并且生成能够在X86架构下运行的gem5程序。

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

目标架构的源代码指的是为了运行在特定架构下的代码。这些代码可能是用特定的编程语言(如C、C++、Java等)编写的,或者是用汇编语言编写的。目标架构的源代码需要经过编译器的编译,才能够转换为能够在目标架构下运行的二进制代码。例如,如果是要在X86架构下运行代码,那么需要使用X86架构的编译器来编译目标架构的源代码,才能得到能够在X86架构下运行的二进制代码。

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

X86架构是一种计算机架构,它是目前广泛使用的一种指令集架构。X86架构下的编译器选项指的是为了编译X86架构下的代码而使用的编译器选项。这些选项包括了指定要编译的代码的架构(如X86、X86-64等)、指定要使用的指令集版本(如SSE、AVX等)以及指定要使用的优化选项(如O1、O2、O3等)等。这些选项用于告诉编译器如何编译代码,以便在X86架构下运行。

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

gem5是一个计算机模拟器,它可以模拟多种不同类型的计算机系统。为了能够进行模拟,gem5需要构建一个模拟环境,也就是模拟器的内部模型。模拟环境描述了模拟的计算机系统的各个组成部分,比如处理器模型、存储器模型和I/O模型等

构建模拟环境可以比作搭建一个沙盘模型。比如,如果要模拟一个城市,那么可以在沙盘上搭建城市的各个景点,比如公园、学校和医院等。而在gem5中,模拟环境就相当于沙盘模型,它描述了模拟的计算机系统的各个部分,比如处理器、存储器和I/O设备等。

构建模拟环境的作用是为了能够进行模拟。通过构建模拟环境,gem5能够模拟不同类型的计算机系统,并提供多种性能指标来分析模拟的计算机系统的行为。这有助于计算机系统的设计和优化,也可以用于计算机系统的教学和研究。可以概括为以下几点:

  • 可以更容易地进行实验和测试:通过模拟,可以更快速、更方便地进行实验和测试,而不需要真实的计算机系统。

  • 可以更精确地进行性能分析:通过模拟,可以更精确地捕捉系统的工作状态,并进行性能分析。这样可以更好地了解系统的行为,并优化系统性能。

  • 可以更安全地进行研究:通过模拟,可以更安全地进行研究,避免对真实计算机系统造成损害。例如,可以在模拟环境中进行危险的实验,而不用担心会破坏真实系统。

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

构建的gem5模拟环境里包含了一个虚拟的计算机系统,用于模拟真实的计算机系统。

具体来说,gem5模拟环境里可能包含以下组件:

  • 处理器模型:模拟真实处理器的指令集、流水线、执行引擎等功能,用于执行虚拟机器指令。

  • 内存模型:模拟真实内存的存储空间、访问速度、缓存机制等特性,用于提供处理器运行时所需的数据和程序。

  • 输入/输出设备模型:模拟真实输入/输出设备的功能、速度、协议等特性,用于实现处理器与外部世界的交互。

  • 操作系统模型:模拟真实操作系统的内核、进程、线程、文件系统等功能,用于管理处理器、内存、输入/输出设备等组件,并实现对应用程序的支持。

此外,gem5模拟环境还包含一些用于控制和分析模拟过程的工具,例如命令行界面、调试器、性能分析器等。这些工具可以帮助研究人员更好地理解模拟。

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

需要rebuild gem5的情况包括:

  • 当gem5的源代码发生更新时,需要重新构建gem5,以便使用最新的代码。
  • 当更改了gem5的构建选项时,需要重新构建gem5,以便使用新的构建选项。
  • 当需要在不同的架构下运行gem5时,需要重新构建gem5,以便生成适合不同架构的代码。
  • 当gem5构建过程中出现错误时,需要重新构建gem5,以便排除错误。

除此之外,在开发gem5的新特性或者修复bug时,也需要重新构建gem5,以便使用最新的代码。总之,在出现上述情况时,都需要重新构建gem5。

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

gem5的源代码主要包括了gem5模拟器的核心部分和模拟器支持的各种计算机系统模型

gem5的核心部分主要包括了模拟器的内核和相关的支持组件。模拟器的内核是gem5的核心部分,它负责实现模拟器的主要功能,比如解析模拟脚本、模拟指令执行和跟踪模拟的状态等。相关的支持组件则为模拟器提供了各种功能,比如输出统计信息、支持多线程执行。

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

构建选项是指在使用 gem5 时可以调整的参数。例如,可以选择要模拟的 CPU 架构,内存大小和速度,以及 I/O 设备的类型和数量。这些选项可以帮助您控制模拟的细节,并确保能够模拟自己感兴趣的系统相似的环境。

五、总结

说了这么多,总结一下gem5 scons的整个过程。gem5是一款计算机模拟器,可以用来模拟真实计算机系统的工作方式。要使用gem5,需要先构建模拟环境,即把gem5的源代码编译成可执行文件。

构建gem5模拟环境的具体过程如下:

  1. 下载gem5源代码:首先,需要从gem5官网或其他渠道下载gem5的源代码,并解压到本地。

  2. 配置编译环境:其次,需要安装必要的编译工具和库文件,并设置好编译选项,以便在下一步进行编译。

  3. 执行编译命令:然后,使用构建工具scons执行编译命令,把gem5的源代码编译成可执行文件。

  4. 生成可执行文件:最后,scons会根据编译选项,在指定的目录下生成gem5的可执行文件。

在构建完成后,gem5会在build/X86目录中生成一个可执行文件gem5.opt,这个文件就是gem5的模拟器。当您需要运行一个模拟脚本时,您可以使用gem5.opt来执行模拟脚本。如果您自定义了一个新的类,则需要重新构建gem5,以便SCons能够根据新的类定义重新生成必要的文件。总的来说,gem5的构建过程需要依赖SCons来完成,并且在运行模拟脚本时需要使用gem5.opt。


参考资料:

(8条消息) gem5学习4——Build System_ivy_reny的博客-CSDN博客

(8条消息) GEM5教程--gem5开始之旅(一)_人间之清欢的博客-CSDN博客

(8条消息) Gem5 学习 1 - Gem5 及其 文件结构_小张的学习手册的博客-CSDN博客

gem5模拟器使用介绍(一) - 张同光 - 博客园 (cnblogs.com)

(8条消息) gem5与Armv8模拟器的设计原理指导与使用指导_yuyezhulan的博客-CSDN博客

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值