赞
踩
官网原文:gem5 Introduction
1、什么是gem5?
gem5是一个模块化离散事件驱动的计算机系统模拟平台。这表示:
1. gem5可以根据需求重排、参数化、扩展或替换;
2. 它以一系列离散事件模真时间的流逝;
3. 它用于以多种方式模拟一个或多个计算机系统;
4. 它不只是一个模拟器,它是一个允许用户使用预置组件建立自己的模拟系统的模拟器平台;
gem5由C++和Python共同完成,大部分组件满足BSD证书。可以在FS(full system)模式下模拟完整的系统,或在SE(syscall emulation)模式下由模拟器提供系统调用模拟用户空间程序。gem5支持:
ISA:Alpha, ARM, MIPS, Power, SPARC, 64位x86
CPU:两个简单的单CPI模型,乱序模型,顺序流水线模型
存储系统可以灵活构建cache以及crossbar。目前,Ruby模拟器与gem5集成,可以提供更为灵活的存储系统建模。
2、创造性的功能
gem5用于计算机体系结构研究,如果要添加新功能,gem5的模块化设计允许在不了解gem5全部机制的前提下修改特定的功能。
若添加了新的功能,请考虑回馈gem5为更多的人提供方便。
3、获取
gem5源码由Mercurial版本控制系统管理。可能感兴趣的库:
1. gem5 — 主库
2. gem5-stable — 与gem5的内容基本相同,通常建议使用“gem5”
3. encumbered — gem5的扩展库,使用更为严格的许可证。目前只含有SimpleScalar EIO路径格式的支持。
4. Linux-patches — linux补丁库,提升模拟效率。这些补丁为可选项,建议使用以降低模拟运行时间。
若刚开始使用gem5,你可能会需要Mercurial来获取gem5或gem5-stable库。
获取副本需要确认你的系统上安装了Mercurial并能够运行hg命令。随后使用hg clone 来创建自己的本地副本。使用URL http://repo.gem5.org/XXX ,其中XXX处填写你感兴趣的库名。例如,获取主库:
hg clone http://repo.gem5.org/gem5
运行hg help 查看更多内容。或访问下列网站:
4、获得额外的工具及文件
建立gem5需要的额外的工具以及平台如下:
如果想运行全系统版本(包括全系统回归测试),还需要下载全系统文件(磁盘映像和二进制文件)。Alpha、Arm、x86的内核、磁盘映像、引导程序可在Download(gem5学习3——Download)下载。SPARC的磁盘映像链接为OpenSPARC 。
这些文件的路径写在 ./configs/common/SysPaths.py 中。有些默认路径固化在脚本中,将文件放在相应的默认路径中或编辑SysPaths.py文件修改文件路径,也可以通过设置M5_PATH环境变量来覆盖文件中的路径。若没有该步骤,在第一次尝试运行FS模式时会看到如下error:ImportError: Can't find a path to system files.
注意,默认路径 /dist/m5/system 需要root权限(sudo),并且文件放置的位置可以被多用户共享。如果满足以上两个条件,可以按照如下例子将系统文件放到默认路径:
sudo mkdir -p /dist/m5/system
cd /dist/m5/system
sudo tar vxfj <path>/m5_system_2.0b3.tar.bz2
sudo mv m5_system_2.0b3/* . ; sudo rmdir m5_system_2.0b3/
sudo chgrp -R <grp> /dist # where <grp> is a group that contains all the m5 users
大多数情况下,最简单的办法是把文件放在方便的位置并修改M5_PATH变量。
5、编译
gem5使用scons建立系统。在源目录下运行scons build/<config>/<binary> 建立模拟器。<config> 指代build变量预定义集,<binary> 指代一种m5二进制文件。
<config> 预定义集中的变量决定的配置信息影响建立的二进制模拟器的行为、构成和功能。变量包括支持的ISA、要编译的CPU模式以及相应的协议Ruby。样例配置文件见build_opts目录。
<binary> 合法二进制名称有:gem5.debug, gem5.opt, gem5.fast, gem5.prof。不同二进制有不同的特性。
gem5.debug 有关闭了优化,使gdb一类的工具更易于调试;
gem5.opt有打开优化,但保留了调试输出和断言;
gem5.fast去除了调试工具;
gem5.prof用于与gprof共同使用。
通常会选择gem5.opt。举例,建立SE模式,ARM架构,打开优化并保留调试,运行如下指令:
scons build/ARM/gem5.opt
随后可以在源目录下看到 build/ARM/目录,其中有要求的gem5.opt文件。在随后的章节中,假设这就是你使用的bin文件。
更多细节见
6、运行
建立了gem5后,现在可以运行它了。一个gem5命令行由四部分组成:二进制文件、gem5选项、要运行的配置脚本、配置脚本的选项。在 ./configs/example 下可以看到几个配置脚本样例。你也可以自己编写脚本,但样例是个好的开始。以se.py举例,建立了一个基本的系统调用仿真模式。运行hello world样例。命令行如下:
build/ARM/gem5.opt configs/example/se.py -c tests/test-progs/hello/bin/arm/linux/hello
建立了一个模拟系统,运行指定位置的二进制文件,并开始模拟。运行结果及控制台输出如下:
gem5 Simulator System. http://gem5.org
gem5 is copyrighted software; use the --copyright option for details.
gem5 compiled Jul 17 2011 19:16:28
gem5 started Jul 17 2011 19:18:16
gem5 executing on zizzer
command line: ./build/ARM/m5.opt configs/example/se.py
Global frequency set at 1000000000000 ticks per second
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
**** REAL SIMULATION ****
info: Entering event queue @ 0. Starting simulation...
Hello world!
hack: be nice to actually delete the event here
Exiting @ tick 3188500 because target called exit()
可以看到模拟器输出很多信息,但”Hello world!”一行来自被模拟的程序。模拟过程中生成的输出文件放在m5out目录下,数据在stats.txt文件中。
在这个例子中,并未提供gem5的选项。如果有选项,则放在命令行中gem5.opt与se.py之间。用--help查看支持的命令行选项。注意,两组选项不同,确保你知道它们放在配置脚本之前还是之后。
更多细节见Running_gem5 。
7、求助
gem5有两个邮件列表(mailing list)用于寻求建议和帮助。
gem5-dev用于主要版本的gem5开发者。gem5主版本为网站上发布并且最有可能被用户用于完成模拟的版本。
gem5-users是一个更大的面向用户的邮件列表。上面的用户多为纯用户,或起初并未参与官方发布版本的gem5开发的人员。
通常情况下,gem5-users更为适用。在gem5-dev中的用户,包括所有的主要开发者以及gem5团体的其它成员都在gem5-users上,他们都会看到你在gem5-users上提出的问题。通过gem5-users,他们可以回答你提出的问题,以及其他人对你的问题有什么看法或回答。
8、哪些有效
gem5联合了一些不同的ISA、系统模型(SE/FS)、CPU模型以及存储系统模型来共同工作。不是所有组合都被完全测试过或完全有效。Status Matrix记录了这些组合的当前状态。如果遇到一个被支持的组合不再有效或不确定的组合能够有效工作,请发邮件到邮件列表告之我们。
9、源码更新
当开发者发布新版本的gem5库时,运行一下指令得到最新版本:
hg pull
如果与新版本不冲突,你自己的改动会被保留。如果必要,请重新编译gem5。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。