欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

gem5模拟器快速入门(四) (参考官方文档)

程序员文章站 2022-06-04 19:35:15
...

使用默认配置脚本

gem5附带了许多配置脚本,可让您非常快速地使用gem5。但是,在使用gem5进行计算机体系结构研究时,充分了解要模拟的系统也很重要。

目录结构浏览

我们可以在configs/中找到gem5的所有配置文件。简要说明如下:

文件夹 作用
boot/ 这些是在 full-system 模式下使用的rcS文件。 这些文件在Linux启动后由模拟器加载,并由Shell执行。
common/ 该目录包含许多用于创建模拟系统的帮助程序脚本和函数。Options.py包含可以在命令行上设置的各种选项。像CPU的数量,系统时钟等等。这是查看是否要更改的选项是否已经包含命令行参数的好地方。CacheConfig.py包含用于设置经典内存系统的缓存参数的选项和功能。MemConfig.py提供了一些用于设置内存系统的帮助程序功能。FSConfig.py包含为许多不同类型的系统设置全系统仿真所需的功能。Simulation.py包含许多用于设置和运行gem5的辅助函数。
dram/ 包含用于测试DRAM的脚本。
example/ 该目录包含一些示例gem5配置脚本,可以直接使用它们来运行gem5。 具体来说,se.py和fs.py非常有用。
ruby/ 此目录包含Ruby及其随附的缓存一致性协议的配置脚本。
splash2/ 目录包含用于运行splash2基准套件的脚本,其中包含一些用于配置模拟系统的选项。
topologies/ 该目录包含创建Ruby缓存层次结构时可以使用的拓扑的实现。

使用se.py和fs.py

在这里,将讨论两个文件共有的选项。本节中讨论的大多数选项都可以在Options.py中找到,。本节未详细介绍所有选项。要查看所有选项,请使用来运行配置脚本–help,或阅读脚本的源代码。

首先,让我们简单地运行不带任何参数的hello world程序:

build/X86/gem5.opt configs/example/se.py --cmd=tests/test-progs/hello/bin/x86/linux/hello

但是,默认情况下,gem5使用原子CPU并使用原子内存访问,因此没有实际的时序数据报告!要确认这一点,可以查看m5out / config.ini。

为了在计时模式下实际运行gem5,我们指定一个CPU类型。在此期间,我们还可以为L1缓存指定大小。

build/X86/gem5.opt configs/example/se.py --cmd=tests/test-progs/hello/bin/x86/linux/hello --cpu-type=TimingSimpleCPU --l1d_size=64kB --l1i_size=16kB

现在,让我们检查config.ini文件,并确保将这些选项正确配置到最终系统。如果在m5out / config.ini中搜索“cache”,则会发现未创建任何缓存!即使我们指定了缓存的大小,也没有指定系统应使用缓存,因此未创建缓存。 正确的命令行应为:

build/X86/gem5.opt configs/example/se.py --cmd=tests/test-progs/hello/bin/x86/linux/hello --cpu-type=TimingSimpleCPU --l1d_size=64kB --l1i_size=16kB --caches

通过比较两次运行,可以明显发现总时间减少。

一些常见的选项

运行如下命令时将打印所有可能的选项:

build/X86/gem5.opt configs/example/se.py --help

一些重要选项:

文件夹 作用
–cpu-type=CPU_TYPE 要运行的cpu类型。。默认值为atomic,它不执行时序仿真。
–sys-clock=SYS_CLOCK 以系统速度运行的块的*时钟。
–cpu-clock=CPU_CLOCK 以CPU速度运行的块的时钟。这与上面的系统时钟是分开的。
–mem-type=MEM_TYPE 要使用的内存类型。选项包括不同的DDR内存和ruby内存控制器。
–caches 使用经典缓存执行模拟。
–l2cache 如果使用经典缓存,请使用L2缓存执行仿真。
–ruby 使用Ruby代替传统的缓存作为缓存系统模拟。
-m TICKS, --abs-max-tick=TICKS 运行到指定的模拟滴答声,包括来自已恢复检查点的滴答声。如果只想模拟一定数量的模拟时间,这将很有用。
-I MAXINSTS, --maxinsts=MAXINSTS 要模拟的指令总数(默认值:永远运行)。如果要在执行一定数量的指令后停止仿真,此功能很有用。
-c CMD, --cmd=CMD 在系统调用仿真模式下运行的二进制文件。
-o OPTIONS, --options=OPTIONS 传递给二进制文件的选项在整个字符串周围使用“”。当您运行带有选项的命令时,这很有用。您可以通过此变量传递参数和选项(例如–whatever)。
–output=OUTPUT 将标准输出重定向到文件。如果您想将模拟应用程序的输出重定向到文件而不是打印到屏幕,这将很有用。注意:要重定向gem5输出,您必须在配置脚本之前传递参数。
–errout=ERROUT 将stderr重定向到文件。与上面类似。