gem5模拟器入门(二)——创建一个简单的配置脚本

        本章教程将引导您设置一个简单的 gem5 仿真脚本,并首次运行 gem5。假设您已经完成了gem5模拟器入门(一)——环境配置-CSDN博客,并成功构建了带有可执行文件 build/X86/gem5.opt 的 gem5。

        配置脚本将模拟一个非常简单的系统,只有一个简单的 CPU 核心,这个 CPU 核心将连接到系统范围的内存总线。我们还将有一个连接到内存总线的单一DDR3内存通道。

gem5 配置脚本

        gem5 二进制文件接受一个 Python 脚本作为参数,该脚本设置并执行仿真。在这个脚本中,您将创建一个要模拟的系统,创建系统的所有组件,并指定系统组件的所有参数。然后,您可以从脚本中开始仿真。

        这个脚本完全由用户定义。您可以在配置脚本中选择使用任何有效的 Python 代码。本书提供了一种风格示例,该示例在很大程度上依赖于 Python 中的类和继承。作为 gem5 用户,您可以决定将配置脚本做得多么简单或复杂。

        在 gem5 中的 configs/examples 目录中,有许多示例配置脚本。这些脚本大多数都是包罗万象的,允许用户在命令行上指定几乎所有选项。与其从这些复杂的脚本开始,本书将从一个可以运行 gem5 的最简单脚本开始,然后逐步构建。希望到本节结束时,您会对仿真脚本的工作原理有一个很好的了解。

SimObjects

gem5 的模块化设计是围绕 SimObject 类型构建的。模拟系统中的大多数组件都是 SimObjects:CPU、缓存、内存控制器、总线等。gem5 将所有这些对象从其 C++ 实现导出到 Python。因此,从 Python 配置脚本中,您可以创建任何 SimObject,设置其参数,并指定 SimObjects 之间的交互。

1.创建配置文件

mkdir configs/tutorial
mkdir configs/tutorial/part1/
touch configs/tutorial/part1/simple.py

这只是一个普通的 Python 文件,将由 gem5 可执行文件中的嵌入式 Python 执行。因此,您可以使用 Python 中的任何功能和库。

在这个文件中我们要做的第一件事是导入 m5 库和我们编译的所有 SimObjects。

import m5
from m5.objects import *

接下来,我们将创建第一个 SimObject:我们要模拟的系统。System 对象将是我们模拟系统中所有其他对象的父对象。System 对象包含了许多功能性(非时序级)信息,比如物理内存范围、根时钟域、根电压域、内核(在全系统仿真中)等。要创建系统 SimObject,我们只需像实例化普通的 Python 类一样实例化它:

system = System()

现在我们有了要模拟的系统的参考,让我们来设置系统的时钟。首先,我们需要创建一个时钟域。然后我们可以在该域上设置时钟频率。在SimObject

你可能感兴趣的:(计算机体系结构,gem5模拟器,python,gem5,模拟器,X86)