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重定向到文件。与上面类似。 |